LyoqCiAqIEBmaWxlIGF0X21zZy5oCiAqIEBicmllZiDM4bmpwcvGvcyottTN4s/7z6K907/aus3P+8+iveG5ubao0uUKICoKICogQ29weXJpZ2h0IChDKSAyMDE3IFNhbmVjaGlwcyBUZWNobm9sb2d5IENvLiwgTHRkLgogKiBAYXV0aG9yCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogKgogKi8KCiNpZm5kZWYgX19BVF9NU0dfSF9fCiNkZWZpbmUgX19BVF9NU0dfSF9fCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGhlYWRlciBmaWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2luY2x1ZGUgIm1lc3NhZ2UuaCIKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm8gZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiDPwsPmyP249s/7z6LKx8L61+O/zbun0OjH86OsyrXP1r/Nu6dhcHDNqLn9z/vPotaxvdO3osvNQVTD/MHuoaMKICAg1K3AtLao0uW1xMj9uPbP+8+iw/uyu7rDwO294qOstavS0b6tzeK3orj4v827p6OssrvU2dDeuMSjrMTasr/W2Lao0uWzybrDwO294rXEz/vPosP7ICovCiNkZWZpbmUgTVNHX0NNRF9TRVRfTVNHX0lTX0ZEICAJCU1TR19DTURfQVRfUE9SVF9FWFQKI2RlZmluZSBNU0dfQ01EX1NFTkRfQVRSRVFfQllfTVNHIAlNU0dfQ01EX0FUX1JFUQojZGVmaW5lIE1TR19DTURfU0VORF9BVFJTUF9CWV9NU0cgICBNU0dfQ01EX0FUX1JTUAoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi8qKgogKiBAYnJpZWYgxr3MqM3isr+907/az/vPor3Tv9q2qNLlCiAqLwplbnVtICBhdF9tc2dfdHlwZSB7CglBVF9PVVRFUl9NU0dfQkVHID0gTVNHX0NNRF9BVENUTF9CQVNFLAoKCS8qzai5/bjDz/vPos2o1qphdGN0bNb3v9jNqLn9wKnVudb3tq/Jz7GoQVTD/MHuyrXP1rrLvOTEo7/pz/vPorSrtd0qLwoJTVNHX0NNRF9TT0NfTVNHX1JFUSwKCU1TR19DTURfQVRfUE9SVF9PUEVOLC8vbXV4MlVTQrLZ1/cgIE1PRFVMRV9JRF9EUlZDT01NTkfEo7/pt6LLzQoJTVNHX0NNRF9BVF9QT1JUX0NMT1NFLC8vbXV4MlVTQrLZ1/cKCglNU0dfQ01EX0NNVVhfU0VUX1JFUSwKCU1TR19DTURfQ01VWF9TRVRfUlNQLAoKCU1TR19DTURfWlNFVF9SRVEsLy9UU1Cw5rG+xeTWw8no1sMKCU1TR19DTURfWlNFVF9SU1AsCgoJLyoqKioqKioqKioqKioqKiphdF9jdGzT61ZPTFRF1q685M/7z6K2qNLlKioqKioqKioqKioqKioqKioqKioqKioqKi8KCU1TR19DTURfRkQxX0FUQ1RMX1RPX1ZPTFRFLCAgIC8vYXRfY3Rst6LLzcfrx/O1vVZPTFRFCglNU0dfQ01EX0ZEMV9WT0xURV9UT19BVENUTCwgICAvL1ZPTFRFt7W72Mfrx/O1xM/s06a78tXfvavH68fz1K3Ct7e1u9gKCU1TR19DTURfRkQyX0FUQ1RMX1RPX1ZPTFRFLCAgIC8vYXRfY3Rst7W72M/s06a1vVZPTFRFCglNU0dfQ01EX0ZEMl9WT0xURV9UT19BVENUTCwgICAvL1ZPTFRF1ve2r7eiy83H68fztb1hdF9jdGwKCS8qKioqKioqKioqKioqKioqKioqKioq0tTPws6qUFPP4LnYtcTStc7xwODH68fzKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJTVNHX0NNRF9QUFBfUVVJQ0tfRElTQ09OTkVDVCwJLy/N+MLn1ve2r8ilvKS77sqxo6zTyXBwcMSjv+nU2mxjcNCtyczN6rPJuvOjrMGivLTNqNaqYXRfY3Rsts+/qrKmusUvL3poYW5nZmVuILK70OjSqmF0X2N0bLSmwO0KCU1TR19DTURfUVVFUllfQ1NRX1JFUSwJCSAJLy+y6dGv0MW6xce/tsjH68fzCglNU0dfQ01EX1FVRVJZX1NZU0lORk9fUkVRLAkJLy9zeXNpbmZvsunRr8frx/MKCU1TR19DTURfUVVFUllfQ0VSRUdfUkVRLAkJLy9jZXJlZ7Lp0a/H68fzCglNU0dfQ01EX0NTSU1fQVVUSF9SRVEsCQkJLy9jc2lt0enWpMfrx/MKCU1TR19DTURfQ1NJTV9BVVRIX1JTUCwJCQkvL2NzaW3R6dakz+zTpgoJTVNHX0NNRF9DQVJEX01PREVfUkVRLAkJCS8vv6jEo8q9yrax8Mfrx/MKCU1TR19DTURfQ0FSRF9NT0RFX1JTUCwJCQkvL7+oxKPKvcq2sfDP7NOmCglNU0dfQ01EX1BJTl9TVEFUVVNfUkVRLAkJCS8vcGluwuvXtMysx+vH8woJTVNHX0NNRF9QSU5fU1RBVFVTX1JTUCwJCQkvL3BpbsLr17TMrM/s06YKCU1TR19DTURfUElOX1ZFUklGWV9SRVEsCQkJLy9waW7C69Hp1qTH68fzCglNU0dfQ01EX1BJTl9WRVJJRllfUlNQLAkJCS8vcGluwuvR6dakz+zTpgoJTVNHX0NNRF9QSU5fTlVNX1JFUSwJCQkvL3BpbsLryqPT4LTOyv2y6dGvx+vH8woJTVNHX0NNRF9QSU5fTlVNX1JTUCwJCQkvL3BpbsLryqPT4LTOyv2y6dGvz+zTpgoJTVNHX0NNRF9WRVJJRllfUElOX1JFUSwJCQkvL3dlYnVpx+vH83BpbsLr0enWpKOsttTTpr3hubnM5VRfekF0X0NwaW5QdWtTZXQKCU1TR19DTURfVkVSSUZZX1BVS19SRVEsCQkJLy93ZWJ1acfrx/NwdWvC69Hp1qQsttTTpr3hubnM5VRfekF0X0NwaW5QdWtTZXQKCU1TR19DTURfUElOX01BTkFHRV9SRVEsCQkJLy93ZWJ1aSBwaW7C67ncwO0otPK/qqGiudix1aGi0N64xCksttTTpr3hubnM5VRfekF0X1Bpbk1hbmFnZQoJTVNHX0NNRF9DUlNNX1JFUSwJCQkJLy9jcnNtx+vH8woJTVNHX0NNRF9DUlNNX1JTUCwJCQkJLy9jcnNtz+zTpgoJTVNHX0NNRF9DSU1JX1JFUSwJCQkJLy9pbXNpsunRr8frx/MKCU1TR19DTURfQ0lNSV9SU1AsCQkJCS8vaW1zabLp0a/P7NOmCglNU0dfQ01EX0FJUk1PREVfU0VUX1JFUSwJCS8vvfiz9rfJ0NDEo8q9yejWwygxvfgsMLP2KQoJTVNHX0NNRF9ORVRfU0VMRUNUX1JFUSwJCQkvL3dlYnVp0aHU8c34wuco19S2r8vRzfihosrWtq/L0c34KQoJTVNHX0NNRF9ORVRXT1JLX1NFVF9SRVEsCQkvL8rWtq/L0c34uvOjrNGh1PHN+MLn16Ky4QoJTVNHX0NNRF9VU1NEX1NFVF9SRVEsCQkJLy9VU1NEyejWw8frx/MKCU1TR19DTURfVVNTRF9DQU5DRUxfUkVRLAkJLy9VU1NEyKHP+8frx/MKCU1TR19DTURfQ0VMTF9MT0NLX1JFUSwJCQkvL0xURc/Cy/i78r3iy/jGtcfrx/MsV0VCVUnU3cqxw7vT0NXiuPa5psTcCglNU0dfQ01EX0lNRUlfUkVRLAkJCQkvL2ltZWm6xbLp0a/H68fzCglNU0dfQ01EX0dFVF9NQUNfUkVRLAkJCS8vbWFjtdjWt7vxyKEKCglNU0dfQ01EX0FUX1BPUlRfRVhULAkvL7Tyv6rOsWF0zai1wKOsYXTNqLXAvuSx+rXI09rEo7/pSUQKCU1TR19DTURfQVRfUkVRLAkJCS8v0tTP+8+it73Kvbeiy81BVMP8we7H68fzCglNU0dfQ01EX0FUX1JTUCwJCQkvL9LUz/vPore9yr23osvNQVTD/MHuz+zTpgoJTVNHX0NNRF9TRU5EX0FUX1RPX1BTLCAJLy/Tw9Pat6LLzcfrx/NBVNfWt/u0rrj4UFMKCU1TR19DTURfU0VORF9SRVFBVF9UT19GQVJQUywgLy/TptPDt6LLzcfrx/NBVNfWt/u0rrj4zeKyv01DVQoJTVNHX0NNRF9TRU5EX0FUX01TR19SU1AsIC8vvt/M5dOm08PEo7/pt6LLzbXEQVTH68fzz/vPorbU06a1xNOmtPDP+8+io6yw/MCosunRr9bQvOS94bn7tcTJz7GoCgoJTVNHX0NNRF9TRU5EX1JFUV9UT19BUFAsCSAvL2F0X2N0bL2rzeKyv7eiy821xEFUx+vH89axvdPNuLSruPjTptPDCglNU0dfQ01EX1NFTkRfUlNQX1RPX09VVFNJREUsIC8vuanTptPDt6LLzc24tKvX1rf7tK64+M7vwO3NqLXAo6zSu7Dj08PT2reiy83TprTwQVTX1rf7tK64+M3isr9NQ1UgLy9zdW5xdWFuMTEzMAoKCgoJTVNHX0NNRF9aVkVSU0lPTl9SRVEsCS8vdmVyc2lvbrLp0a/H68fzIHpoYW5nZmVuILT9yb6z/aOsz9bU2tPQv6q7+rTTQ1DNrLK9sOaxvrrFtb1BUKOssrvQ6NKqsunRr8HLCgoJTVNHX0NNRF9QUFBfQVVUSF9SRVEsCS8vcHBwsqa6xSjOtMq1z9YpIC8vemhhbmdmZW4gtP3JvrP9CglNU0dfQ01EX1BQUF9ERUFVVEhfUkVRLAkvL3BwcMilsqa6xSjOtMq1z9YpIC8vemhhbmdmZW4gtP3JvrP9CgoJTVNHX0NNRF9BUE5fU0VUX1JFUSwJLy9hcG7J6NbDx+vH8y8vemhhbmdmZW4gYXRfY3Rsw7vT0NeisuHV4rj2z/vPoqOsyLe2qNDo0qo/CgoKCU1TR19DTURfWlNPRENQX1JFUSwJCS8vemhhbmdmZW4gsrvWqrXA08PNvqOsw7vT0Mq508MgtP3JvrP9CglNU0dfQ01EX0VYVF9aU09EQ1BfUkVRLAkvL3poYW5nZmVuILK71qq1wNPDzb6jrMO709DKudPDILT9yb6z/QoKCU1TR19DTURfTURNVkVSU0lPTl9SRVEsLy9NQkLAqdW5YXQ6sunRr21vZGVtsOaxvrrFCglNU0dfQ01EX01ETVZFUlNJT05fUlNQLAoJTVNHX0NNRF9MVEVfVEVDSF9SRVEsCS8vemVhY3QgTFRF19PWxsq90aHU8QoJTVNHX0NNRF9MVEVfVEVDSF9SU1AsCglNU0dfQ01EX05JVFpfUkVRLAkvL8qxvOTNrLK9CglNU0dfQ01EX05JVFpfUlNQLAoJTVNHX0NNRF9BTVJXQl9SRVEsCS8vVk9MVEW438fl0+/S9AoJTVNHX0NNRF9BTVJXQl9SU1AsCgkvKioqKioqKioqKioqKioqKioqKioqKtLUz8LOqrfHUFPP4LnYtcTStc7xwODH68fzKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCU1TR19DTURfU1lDVElNRV9TRVRfUkVRLAkJLy9jcLLgyrG85Mno1sPH68fzCgoJTVNHX0NNRF9GT1JDRV9SQU1EVU1QX1JFUSwJLy/Hv9bGy8C7+sfrx/MgemhhbmdmZW4gw7vT0Mq508OjrLT9yb6z/QoJTVNHX0NNRF9VTkxPQ0tfUkVRLAkJCS8vveLL+M34x+vH8yB6aGFuZ2ZlbiBXRUJVSdPQt6LLzSxhdF9jdGzDu9PQtKbA7aOstP3JvrP9CgoJTVNHX0NNRF9TU0lEX1NFVF9SRVEsIAkJLy96aGFuZ2ZlbiAgU1NJRLrFsaO05tTaQ1Cy4E5Wo6y21NOmwKnVuUFUw/zB7kFUK1NTSUQ9WFjQtENQtcROVqOsyPROVtLGtb1BUKOsuMPP+8+iv8nJvrP9CglNU0dfQ01EX1NTSURfU0VUX1JTUCwJCS8vemhhbmdmZW4gtP3JvrP9CglNU0dfQ01EX1dJRklLRVlfU0VUX1JFUSwgCS8vemhhbmdmZW4gV0lGSUtFWbGjtObU2kNQsuBOVqOsyPROVtLGtb1BUKOstMvP+8+iv8nS1Mm+s/0KCU1TR19DTURfV0lGSUtFWV9TRVRfUlNQLAkvL3poYW5nZmVuIM2syc8KCgkvKioqKioqKioqKioqKioqKioqKioqKtLUz8LOqlBTz+C52LXE1ve2r8nPsajP+8+iuuoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCU1TR19DTURfU0lNX0FCTk9STUFMX0lORCwgCQkvL7+qu/qy6dGvzt6/qKOsv6jL8Lu1o6zQ6NKqUElOoaJQVUvKscnPsagKCU1TR19DTURfUERQX1NUQVRVU19JTkQsIAkJLy9QRFDBtMK317TMrNa4yr4gIjEiUERQvKS77iAiMCJQRFDIpbyku+4KCU1TR19DTURfWlBCSUNfSU5ELCAgCQkJLy+/qLP1yry7r83qs8nJz7GoILbU06a94bm5zOVUX3pBdF9acGJpY1JlcwoJTVNHX0NNRF9aVVNMT1RfSU5ELCAgCQkJLy+/qLLlsM7Qxc+iyc+xqCC21NOmveG5uczlVF96QXRfWnVzbG90UmVzCglNU0dfQ01EX0NSRUdfSU5ELCAgICAgICAgICAgICAgIC8vzfjC59eisuGzybmmz/vPosnPsaijrGNyZWdfc3RhdD0xIG9yIDUKCgoJLyoqKioqKioqKioqKioqKioqKioqKirS1M/Czqpwc8/gudi1xLf+zvG2y8frx/PP+8+iuuoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCVNFUlZFUl9CQVNFLAoKCVNFUlZFUl9FTkQsCgoJLyoqKioqKioqKioqKioqKioqKioqKirS1M/Czqq3x1BTz+C52LXEt/7O8bbLx+vH88/7z6K66ioqKioqKioqKioqKioqKioqKioqKioqKiovCglFWFRBVF9TRVJWRVJfQkFTRSwKCglFWFRBVF9TRVJWRVJfRU5ELAoKCS8qKioqKioqKioqKioqKioqKioqKioq0tTPws6qsrvIt7aosr+31izOtMq508OjrLT9yb6z/SoqKioqKioqKioqKioqKioqKioqKioqKiovCglNU0dfQ01EX1dFQl9SRVFfUkVTRVRfTU9ERU0sCQkvL9TdsrvIt7aoCglNU0dfQ01EX1dFQl9SRVFfU0VSQUlMUE9SVF9PTiwJCS8v1N2yu8i3tqgKCU1TR19DTURfV0VCX0xPR19ESVJFQ1RJT04sCQkJLy/U3bK7yLe2qAoJTVNHX0NNRF9TSU1fSU5JVF9SRUFEWSwJCQkJLy/U3bK7yLe2qCzH69LG1sF3aWZpCglNU0dfQ01EX1dFQl9SRVFfVENBUkRTRVQsCQkJLy90v6jJ6NbDo6zU3bK7yLe2qAoJTVNHX0NNRF9HRVRfTE9HX0RJUiwJCQkJLy/U3bK7yLe2qAoJTVNHX0NNRF9HRVRfTE9HX0RJUl9PSywJCQkJLy/U3bK7yLe2qAoKCgkvKioqKioqKioqKioqKioqtszQxc/gudggYmVnaW4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglNU0dfQ01EX1NFTkRTTVNfUkVRLCAgICAJLy+3osvNtszQxcfrx/MgttTTpr3hubnM5VRfelNtc19TZW5kU21zUmVxCglNU0dfQ01EX1NFTkRTTVNfUlNQLAoJTVNHX0NNRF9ERUxTTVNfUkVRLCAgICAgCS8vyb6z/bbM0MXH68fzILbU06a94bm5zOVUX3pTbXNfRGVsU21zUmVxCglNU0dfQ01EX0RFTFNNU19SU1AsCglNU0dfQ01EX1NUT1JBR0VfQ0FQX1JFUSwgIAkvL8nPsuO05rSixNzBpsfrx/MgttTTpr3hubnM5VRfelNtc19TdHJvYWdlUmVxCglNU0dfQ01EX1NUT1JBR0VfQ0FQX1JTUCwKCU1TR19DTURfTU9ESUZZX1RBR19SRVEsICAgIAkvL9DeuMS2zNDF17TMrM6q0tG2wSC21NOmveG5uczlVF96U21zX01vZGlmeVRhZ1JlcQoJTVNHX0NNRF9NT0RJRllfVEFHX1JTUCwKCU1TR19DTURfUkVBRFNNU19SRVEsICAgICAgCS8vtsG2zNDFx+vH8yC21NOmveG5uczlVF96U21zX1JlYWRTbXNSZXEKCU1TR19DTURfUkVBRFNNU19SU1AsCQkvL7bBtszQxc/s06YKCU1TR19DTURfU0NBX1NFVF9SRVEsIAkJLy9TQ0HJ6NbDx+vH8yC21NOmveG5uczlVF96U21zX1NldFNjYVJlcQoJTVNHX0NNRF9TQ0FfU0VUX1JTUCwKCU1TR19DTURfTk9USUZZX1NFVF9SRVEsICAJLy+2zNDFzajWqsSjyr3J6NbDICC21NOmveG5uczlVF96U21zX05vdGlmeVNldFJlcQoJTVNHX0NNRF9OT1RJRllfU0VUX1JTUCwKCU1TR19DTURfU01TQUNLX1JFUSwgICAgICAgICAvL8i3yM+2zNDFILbU06a94bm5zOVUX3pTbXNfU21zQWNrUmVxCglNU0dfQ01EX1NNU0FDS19SU1AsCglNU0dfQ01EX1NNU0lOSVRfUkVRLCAJCS8vtszQxcSjv+mz9cq8u68KCU1TR19DTURfU01TSU5JVF9SU1AsCgoJTVNHX0NNRF9ORVdTTVNfSU5ELCAgICAgCS8v0MK2zNDFyc+xqCC21NOmveG5uczlVF96U21zX1Ntc0luZAoJTVNHX0NNRF9ORVdTTVNfU1RBVFVTX0lORCwgIC8v0MK2zNDF17TMrMnPsaggttTTpr3hubnM5VRfelNtc19TbXNJbmQKCU1TR19DTURfTkVXU01TX0lOREVYX0lORCwgCS8v0MK2zNDFaW5kZXjJz7GoILbU06a94bm5zOVUX3pTbXNfU21zSW5kZXhJbmQKCU1TR19DTURfTkVXU01TX1NUQVRVU19JTkRFWF9JTkQsLy/QwrbM0MXXtMyssai45rW9tO/WuMq+ILbU06a94bm5zOVUX3pTbXNfU21zSW5kZXhJbmQKCU1TR19DTURfWk1HUl9JTkQsICAgICAgICAgICAvL7bBtszQxdbQvOTE2sjd1ve2r8nPsaggILbU06a94bm5zOVUX3pTbXNfU21zSW5kCglNU0dfQ01EX0NTQ0FfSU5ELAkJCS8vtszQxdbQ0MS94bn7yc+xqCAgttTTpr3hubnM5VRfelNtc19Dc2NhSW5kCglNU0dfQ01EX1pNR0xfSU5ELAkJCS8vtszQxcHQse3Qxc+iyc+xqCC21NOmveG5uczlVF96U21zX1Ntc0luZAoJTVNHX0NNRF9DUE1TX0lORCwgICAgCQkvL7bM0MW05rSix/jS0dPDus3X3Mjdwb/Jz7GoILbU06a94bm5zOVUX3pTbXNfQ3Btc0luZAoJLyoqKioqKioqKioqKioqtszQxc/gudggZW5kKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJLyoqKsP7xqy80M/gudggYmVnaW4qKioqLwoJTVNHX0NNRF9SRUFEX1BCX1JFUSwvL7bByKG1pcz1w/vGrLzQx+vH8woJTVNHX0NNRF9SRUFEX1BCX1JTUCwvL7bByKG1pcz1w/vGrLzQu9i4tAoJTVNHX0NNRF9BRERfTU9ESUZZX1BCX1JFUSwvL9DeuMS1pcz1w/vGrLzQx+vH8woJTVNHX0NNRF9BRERfTU9ESUZZX1BCX1JTUCwvL9DeuMS1pcz1w/vGrLzQu9i4tAoJTVNHX0NNRF9ERUxFVEVfUEJfUkVRLC8vyb6z/cP7xqy80Mfrx/MKCU1TR19DTURfREVMRVRFX1BCX1JTUCwvL8m+s/3D+8asvNC72Li0CglNU0dfQ01EX1BCSU5JVF9SRVEsLy+z9cq8u6/D+8asvNDH68fzCglNU0dfQ01EX1BCSU5JVF9SU1AsLy+z9cq8u6/D+8asvNC72Li0CglNU0dfQ01EX0NQQlNfSU5ELC8vsunRr3Bi0MXPorXE19y05rSixve49sr9oaLS0dPDtOa0osb3uPbK/dDFz6IKCU1TR19DTURfU0NQQlJfSU5ELC8vsunRr3BitcTI3cG/vLC05rSiwODQzQoJTVNHX0NNRF9TQ1BCUl9SRUFEX0lORCwvL7Lp0a+1pcz1cGLQxc+i1tC85Ln9s8zJz7GoCgkvKioqw/vGrLzQz+C52CBlbmQqKioqLwoKCS8vzOG5qbj4Y2NhcHDKudPDCglNU0dfQ01EX0FURF9ESUFMX1JFUSwKCU1TR19DTURfQVREX0RJQUxfUlNQLAoJTVNHX0NNRF9BVEFfUkVRLAoJTVNHX0NNRF9BVEFfUlNQLAoJTVNHX0NNRF9DSFVQX1JFUSwKCU1TR19DTURfQ0hVUF9SU1AsCglNU0dfQ01EX1ZUU19SRVEsCglNU0dfQ01EX1ZUU19SU1AsCglNU0dfQ01EX1pJTVNQTFVTX1JFUSwKCU1TR19DTURfWklNU1BMVVNfUlNQLAoJTVNHX0NNRF9DQ0ZDX1JFUSwKCU1TR19DTURfQ0NGQ19SU1AsCglNU0dfQ01EX0NITERfUkVRLAoJTVNHX0NNRF9DSExEX1JTUCwKCU1TR19DTURfQ0xDS19SRVEsCglNU0dfQ01EX0NMQ0tfUlNQLAoJTVNHX0NNRF9TRVRfVlBMT09QX1JFUSwKCS8qKioqKioqKioqKioqKioqLwoJLy/M4bmpuPhjY2FwcMq508MKCU1TR19DTURfRFNDSV9JTkQsCglNU0dfQ01EX1pJTVNQTFVTX0lORCwKCU1TR19DTURfWkNQSSwKCU1TR19DTURfWlZPSUNFQ0hOTCwKICAgICAgCglNU0dfQ01EX01PREVNUkVHX0lORk9fUkVRLCAgICAvL8rVtb1aUEJJQ7rztKW3otCt0unVu7nMtqjQxc+iu/HIocrCvP7BtFpJQ0NJRCBDSU1JIENOVU0KCU1TR19DTURfTU9ERU1SRUdfSU5GT19SU1AsCglNU0dfQ01EX1JPQU1fU1RBVFVTX0lORCwgICAgICAvL8L+087XtMyst6LJ+rHku6/WuMq+CgoJLyoqKioqKioqKioqKioqKioqKtb3tq/Jz7GovLDW0LzkveG5+8nPsagqKioqKioqKioqKioqKioqKioqKi8KCU1TR19DTURfQVVUT19SU1AsCgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKk5WKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJTVNHX0NNRF9TWU5DX05WX1JFUSwgICAvL0FQsuC3osbwTlbNrLK9x+vH86Osvatuds2ssr21vUNQCgoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKipBVF9DVEwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglNU0dfQ01EX0RBVEFTV0lUQ0hfT05fUkVRLCAgICAgICAgICAgICAgLy9DUMr9vt2/qrnYKLKmusXJz834Kc2o1qpBUAoJTVNHX0NNRF9EQVRBU1dJVENIX09GRl9SRVEsICAgICAgICAgICAgIC8vQ1DK/b7dv6q52CjIpbKmusUpzajWqkFQCgoJTVNHX0NNRF9BVF9GSUxURVJfUkVRLCAgICAgICAgICAgICAgICAgIC8vQVDNqNaqQ1DQ6NKquf3Cy9b3tq/Jz7GotcRBVMP8we4KCU1TR19DTURfU1lOQ19BVENNRF9TVFJFQU0sICAgICAgICAgICAgICAvL0FQsuC3osbwTlbNrLK9o6zS8kFUw/zB7sH3vc+zpMfSw/zB7rqsy6vS/brFo6y1pbbAzayyvQoJTVNHX0NNRF9BRERfTU5FVF9XSElURUxJU1QsCQkJCQkvL0NQsuC3osbwyqG157DXw/u1pcP8we7QwtT2CglNU0dfQ01EX0FERF9NTkVUX1dISVRFTElTVF9SU1AsCQkJCS8vQ1Cy4LeixvDKobXnsNfD+7Wl0MLU9sP8we7P7NOmCglNU0dfQ01EX0RFTF9NTkVUX1dISVRFTElTVCwJCQkJCS8vQ1Cy4LeixvDKobXnsNfD+7Wlw/zB7sm+s/0KCU1TR19DTURfREVMX01ORVRfV0hJVEVMSVNUX1JTUCwJCQkJLy9DULLgt6LG8Mqhteew18P7taXJvrP9w/zB7s/s06YKCU1TR19DTURfR0VUX01ORVRfV0hJVEVMSVNULAkJCQkJLy9DULLgt6LG8Mqhteew18P7taXD/MHuu/HIoQoJTVNHX0NNRF9HRVRfTU5FVF9XSElURUxJU1RfUlNQLAkJCQkvL0NQsuC3osbwyqG157DXw/u1pbvxyKHD/MHuz+zTpgoJTVNHX0NNRF9DTEVBUl9NTkVUX1dISVRFTElTVCwJCQkJLy9DULLgt6LG8Mqhteew18P7taXH5bP9CglNU0dfQ01EX0NMRUFSX01ORVRfV0hJVEVMSVNUX1JTUCwJCQkvL0NQsuC3osbwyqG157DXw/u1pcfls/3D/MHuz+zTpgoKLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t0tTPwsrHT1BFTkNQVbXEz/vPoklELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKi8KCU1TR19DTURfUERQX0FDVF9SRVEsCQkvL3BkcLyku+7Stc7xx+vH86OsttTTpr3hubnM5UFUX1BEUF9BQ1RfSU5GTwoJTVNHX0NNRF9QRFBfQUNUX1JTUCwJCS8vcGRwvKS77tK1zvHP7NOmo6y21NOmveG5uczlQVRfUERQX0FDVF9SU1AKCU1TR19DTURfUERQX0RFQUNUX1JFUSwJCS8vcGRwyKW8pLvu0rXO8cfrx/OjrLbU06a94bm5zOVBVF9QRFBfREVBQ1RfSU5GTwoJTVNHX0NNRF9QRFBfREVBQ1RfUlNQLAkJLy9wZHDIpbyku+7Stc7xz+zTpqOsttTTpr3hubnM5UFUX1BEUF9ERUFDVF9SU1AKCU1TR19DTURfUERQX0RFQUNUX0lORCwJCS8vcGRwzfjC57LgyKW8pLvu1rjKvqOsz/vPotCvtPjIpbyku+61xGNpZLrFCi8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiovCglNU0dfQ01EX1FVRVJZX0NHRENPTlRfUkVRLCAgLy/QvsasyM/WpLDmsb6y6dGvY2dkY29udM/7z6IKCU1TR19DTURfWlVUUl9SRVEsICAvL7SmwO16dXBjabXEz+zTpgoJTVNHX0NNRF9RVUVSWV9DR0NPTlRSRFBfUkVRLAkJLy9DR0NPTlRSRFCy6dGvx+vH8woJTVNHX0NNRF9ST0FNX1NFVF9SRVEsIAkJLy93ZWJ1adGh1PFyb2FtCglNU0dfQ01EX1pDQVJEU1dJVENISU5EX0lORCwJCS8vWkNBUkRTV0lUQ0hJTkQKCU1TR19DTURfVlNJTURFQlVHX0lORCwgCS8vVlNJTURFQlVHCglNU0dfQ01EX1pTQ0lTQ0FOX1JFUSwJLy9WU0lNIGNlbGwgaW5mbwoJTVNHX0NNRF9aU0NJU0NBTl9JTkQsCS8vVlNJTSBjZWxsIGluZm8KCU1TR19DTURfUFBQX1RVUk5fQ01ELAkvL1BQUCB0dHkgdHVybiBjbWQKfTsKI2VuZGlmCgp0eXBlZGVmIHN0cnVjdCB7CglpbnQgcmVzdWx0OwkJLy+0psDtveG5+woJaW50IGVycmNvZGU7CS8vtO3O88LrCgl1bnNpZ25lZCBzaG9ydCBtc2dfY21kOy8vz/vPosDg0M0KICAgIGludCBleHRjaWQ7IC8vY2hhbm5lbAogICAgaW50IGFjdF90eXBlOyAvLyAwIMilvKS77iAgMSC8pLvuCiAgICBjaGFyIGlwWzEyOF07Ly9pcAogICAgaW50IHVyY19zd2l0Y2g7IC8vMCC52LHV1ve2r8nPsaggIDEgtPK/qtb3tq/Jz7GoCn0gQVRfQ09NTV9SU1BNU0c7CgovL7bU06bP+8+iTVNHX0NNRF9TRU5EX0FUX01TR19SRVEKc3RydWN0IGFwcF9zZW5kX3JlcV9hdHsKCWNoYXIgYXRzdHJbTVNHX0RBVEFfTUFYX0xFTi0xMl07CiAgICBpbnQgIHN0cl9sZW47Ly+4w7Hkwb/OqsHLveK+9rb+vfjWxsLrwfe1xNaxvdO3osvNo6zO3reo1rG908q508NzdHJsZW4KCWludCAgdGltZW91dDsKfTsKCgovKsnPsuPTptPD0OjSqtLUz/vPotDOyr23osvN1ve2r8nPsajD/MHutb3N4rK/bWN1Ki8KdHlwZWRlZiBzdHJ1Y3QgewoJY2hhciBhdXRvcnNwX2NtZFtNU0dfREFUQV9NQVhfTEVOLThdOyAvL8r91+mzpLbIysfP+8+ixNrI3dfutPOzpLbIvPUyKmludMDg0M21xLOktsgKCWludCBsZW47Cn0gQVRfQVVUT1JTUF9JTkZPOwoKLyrJz7Lj06bTw7SmwO3N6s24tKvK/b7duvO1xM/s06bP+8+iKi8KdHlwZWRlZiBzdHJ1Y3QgewoJY2hhciByc3BfY21kW01TR19EQVRBX01BWF9MRU4gLSA4XTsKCWludCBsZW47Cn0gQVRfUEFTU1RIUk9VR0hfUlNQOwoKLyogttTTplZPTFRF0+tBVF9DVEzWrrzkvbu7pbXEz/vPok1TR19DTURfRkQyX1ZPTFRFX1RPX0FUQ1RML01TR19DTURfRkQyX0FUQ1RMX1RPX1ZPTFRFICovCnR5cGVkZWYgc3RydWN0IAp7CiAgICBpbnQgYXRfZmQ7CglpbnQgbXNnX2xlbjsKICAgIGNoYXIgbXNnX2RhdGFbTVNHX0RBVEFfTUFYX0xFTi0xMl07Cn1WT0xURV9NU0dfREFUQTsKCnR5cGVkZWYgc3RydWN0IAp7CiAgICBpbnQgYXRfZmQ7CglpbnQgbXNnX2xlbjsKICAgIGNoYXIgbXNnX2RhdGFbXTsKfVZPTFRFX01TR19EQVRBX0hFQUQ7CgoKI2VuZGlmCgo=