60806040525f60075534801562000014575f80fd5b506200002033620000a0565b6200002b33620000fa565b620000356200013d565b506200004062000161565b604080513081526020810182905260118183015270455243313430305f4571756974795f563160781b606082015290517fdf801e5bc3905a7494c042430ec616a8ccf2c37fc5a25916a18e600eb52415719181900360800190a16200049b565b5f80546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6200010760028262000221565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6905f90a250565b5f46816200014a620002a0565b5f9283526003602052604090922082905550919050565b5f54610100900460ff1615620001ce5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084015b60405180910390fd5b5f5460ff90811610156200021f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6200022d828262000346565b156200027c5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401620001c5565b6001600160a01b03165f90815260209190915260409020805460ff19166001179055565b5f46817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002ce620003c9565b8051602090910120620002f56040805180820190915260018152603160f81b602082015290565b80516020918201206040805192830194909452928101919091526060810191909152608081018390523060a082015260c00160408051601f1981840301815291905280516020909101209392505050565b5f6001600160a01b038216620003aa5760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401620001c5565b506001600160a01b03165f908152602091909152604090205460ff1690565b606060048054620003da9062000461565b80601f0160208091040260200160405190810160405280929190818152602001828054620004089062000461565b8015620004575780601f106200042d5761010080835404028352916020019162000457565b820191905f5260205f20905b8154815290600101906020018083116200043957829003601f168201915b5050505050905090565b600181811c908216806200047657607f821691505b6020821081036200049557634e487b7160e01b5f52602260045260245ffd5b50919050565b613e7e80620004a95f395ff3fe608060405234801561000f575f80fd5b50600436106104e8575f3560e01c8063895d73861161028f578063b6363cf211610161578063dd62ed3e116100d5578063f2fde38b1161008f578063f2fde38b14610b8b578063f3d490db14610b9e578063f698da2514610bb6578063f76024f914610bbe578063f81094f314610bd1578063fad8b32a14610be4575f80fd5b8063dd62ed3e14610ad8578063e47d606014610b10578063e77c646d14610b23578063ea74838a14610b36578063ee532f3114610b44578063ee67cc2a14610b57575f80fd5b8063c350184811610126578063c350184814610a79578063c5a1e97014610a8c578063c630948d14610a9f578063c64d0ebc14610ab2578063ca281fd9146107c0578063dc0eea8d14610ac5575f80fd5b8063b6363cf214610a1a578063bb3acde914610a2d578063bd33810a14610a40578063bed34bba14610a53578063c2e3273d14610a66575f80fd5b80639865027511610203578063a6f4f105116101bd578063a6f4f1051461099f578063a8082cb0146109b2578063a9059cbb146109ba578063aa271e1a146109cd578063b10d6b41146109e0578063b5bf15e514610a07575f80fd5b8063986502751461095757806398ddcec7146107965780639d2f9da11461095f5780639fa5f50b14610972578063a02619e414610979578063a262f9531461098c575f80fd5b80639138ed92116102545780639138ed92146108f5578063933964c714610908578063959b8c3f1461091b57806395d89b411461092e5780639675193c14610936578063983b2d5614610944575f80fd5b8063895d7386146105015780638c0dee9c146108895780638da5cb5b146108a45780638daa6fc9146108ce5780638f78a20e146108e2575f80fd5b8063313ce567116103c85780636b32810b1161033c578063740ab8f4116102f6578063740ab8f41461082157806379cc6790146108415780637cc0c3a71461085457806382940b4c1461085b578063861ed3ea1461086d57806386fe8b4314610881575f80fd5b80636b32810b146107ab5780636c30d170146107c05780636d77cad6146107c85780636f9170f6146107de57806370a08231146107f1578063715018a614610819575f80fd5b806342966c681161038d57806342966c68146107495780634c783bf51461075c5780634f5632f814610767578063556f0dc71461077a57806362eb00681461078257806367c8491914610796575f80fd5b8063313ce567146106f7578063329b7353146106fd578063330eb932146107105780633b0071aa1461072357806340c10f1914610736575f80fd5b806316e1aed41161045f57806323b872dd1161042457806323b872dd14610686578063249cb3fa146106995780632535f762146106ac5780632f1cae85146106bf5780633092afd5146106cf57806330e82803146106e2575f80fd5b806316e1aed4146105eb57806317ec83ca146105fe57806318160ddd1461063b5780631b9aa7f2146106435780631d43e1c014610669575f80fd5b8063103ef9e1116104b0578063103ef9e11461056a5780631131d0ec1461057c578063114f481a1461058f57806314d1e62f146105a257806315497d2c146105b5578063168ecec51461056a575f80fd5b8063010648ca146104ec57806306fdde0314610501578063095ea7b31461051f5780630d1118ce146105425780630d8e6e2c14610555575b5f80fd5b6104ff6104fa3660046130d9565b610bf7565b005b610509610c2e565b6040516105169190613174565b60405180910390f35b61053261052d36600461319c565b610cbe565b6040519015158152602001610516565b6104ff61055036600461319c565b610d5e565b60015b60405160ff9091168152602001610516565b6104ff6105783660046131c4565b5050565b61053261058a3660046131ee565b610d96565b6104ff61059d3660046132eb565b610da2565b6105326105b036600461332c565b610e85565b6105dd6105c33660046131ee565b6001600160a01b03165f9081526017602052604090205490565b604051908152602001610516565b6104ff6105f936600461339e565b610f30565b6105dd61060c3660046133e5565b5f9283526025602090815260408085206001600160a01b03948516865282528085209290931684525290205490565b6007546105dd565b61065461065136600461341e565b90565b60405163ffffffff9091168152602001610516565b6040805180820190915260018152603160f81b6020820152610509565b610532610694366004613435565b610f38565b6105dd6106a73660046131c4565b610f6b565b6104ff6106ba36600461345e565b610fc8565b600f54610100900460ff16610532565b6104ff6106dd3660046131ee565b611016565b6105dd6106f03660046131c4565b5f92915050565b5f610558565b6104ff61070b3660046134b3565b61104e565b6104ff61071e3660046134cc565b611085565b6104ff6107313660046135a0565b611187565b6104ff61074436600461319c565b6112ef565b6104ff61075736600461341e565b61132f565b600f5460ff16610532565b6104ff6107753660046131ee565b61134a565b6006546105dd565b6104ff61079036600461365d565b50505050565b6104ff6107a4366004613693565b5050505050565b6107b3611398565b60405161051691906136f5565b6104ff6113a9565b6105326107d63660046133e5565b5f9392505050565b6105326107ec3660046131ee565b6113b3565b6105dd6107ff3660046131ee565b6001600160a01b03165f9081526015602052604090205490565b6104ff6113bd565b61083461082f3660046131ee565b6113ce565b6040516105169190613741565b6104ff61084f36600461319c565b611437565b60606107b3565b60095461053290610100900460ff1681565b6107b361087b36600461341e565b50606090565b6107b3611448565b6105dd610897366004613778565b5f98975050505050505050565b5f546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610516565b6108b66108dc36600461341e565b60601c90565b6104ff6108f03660046132eb565b611454565b6105326109033660046131ee565b61152e565b6104ff610916366004613814565b61157e565b6104ff6109293660046131ee565b611586565b6105096115f2565b6104ff61079036600461345e565b6104ff6109523660046131ee565b611601565b6104ff611636565b6104ff61096d36600461383c565b61163f565b6060610834565b6009546105329062010000900460ff1681565b6104ff61099a3660046138c1565b611677565b6104ff6109ad366004613986565b611924565b6105dd611934565b6105326109c836600461319c565b6119d6565b6105326109db3660046131ee565b611a07565b6109f86109ee36600461341e565b506060905f908190565b60405161051693929190613a05565b6104ff610a153660046134b3565b611a13565b610532610a28366004613a29565b611a8f565b6104ff610a3b36600461345e565b611aa1565b6104ff610a4e3660046132eb565b611b4c565b610532610a61366004613a51565b611c30565b6104ff610a743660046131ee565b611c88565b6104ff610a8736600461341e565b611cd6565b6104ff610a9a3660046132eb565b611d04565b6104ff610aad3660046131ee565b611ddf565b6104ff610ac03660046131ee565b611ded565b610532610ad33660046131ee565b611e3b565b6105dd610ae6366004613a29565b6001600160a01b039182165f90815260166020908152604080832093909416825291909152205490565b610532610b1e3660046131ee565b611e47565b6104ff610b31366004613ab0565b505050565b6104ff610916366004613aea565b6104ff610b52366004613b28565b611e51565b6108b6610b65366004613b53565b80516020818301810180516014825292820191909301209152546001600160a01b031681565b6104ff610b993660046131ee565b611ea0565b6105dd610bac366004613693565b5f95945050505050565b6105dd611f16565b6104ff610bcc366004613814565b611f1f565b6104ff610bdf3660046131ee565b611faf565b6104ff610bf23660046131ee565b611ffd565b335f908152602b602052604090205460ff166107905760405162461bcd60e51b8152600401610c2590613b8c565b60405180910390fd5b606060048054610c3d90613bc3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6990613bc3565b8015610cb45780601f10610c8b57610100808354040283529160200191610cb4565b820191905f5260205f20905b815481529060010190602001808311610c9757829003601f168201915b5050505050905090565b5f6001600160a01b038316610cfa5760405162461bcd60e51b81526020600482015260026024820152611a9b60f11b6044820152606401610c25565b335f8181526016602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b335f908152602b602052604090205460ff16610d8c5760405162461bcd60e51b8152600401610c2590613b8c565b6105788282612066565b5f610d58601283612155565b335f908152602b602052604090205460ff16610dd05760405162461bcd60e51b8152600401610c2590613b8c565b81515f5b81811015610e35575f602a5f868481518110610df257610df2613bfb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e2d81613c23565b915050610dd4565b508115610e5857600d805461ff001981166101009182900460ff16159091021790555b6040517f79587af599c7940be748e538d50c69fa337c6b269b4715ed6f541ebde418799f905f90a1505050565b5f6001600160a01b038316610ec15760405162461bcd60e51b81526020600482015260026024820152611a9b60f11b6044820152606401610c25565b5f848152602560209081526040808320338085529083528184206001600160a01b038816808652908452938290208690559051858152909187917ff061499aa77c2f6f5e25e34955a06623705344a88256cc861a121ec0bce5cfec910160405180910390a45060019392505050565b610b31612176565b5f610f4660018585856121d6565b610f613385858560405180602001604052805f81525061267e565b5060019392505050565b5f8281526001602052604081205460ff1615610fc15760405173455243313832305f4143434550545f4d4147494360601b6020820152603401604051602081830303815290604052805190602001209050610d58565b505f610d58565b610fd45f3386866121d6565b6107903333868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061267e92505050565b61101f33611a07565b8061103a57505f546001600160a01b03620100009091041633145b611042575f80fd5b61104b81612716565b50565b335f908152602b602052604090205460ff1661107c5760405162461bcd60e51b8152600401610c2590613b8c565b61104b81612757565b335f908152602b602052604090205460ff166110b35760405162461bcd60e51b8152600401610c2590613b8c565b82515f5b81811015611134576111228582815181106110d4576110d4613bfb565b60200260200101518583815181106110ee576110ee613bfb565b60200260200101516001600160a01b039091165f9081526017602052604090206bffffffffffffffffffffffff9091169055565b8061112c81613c23565b9150506110b7565b508115611159576009805462ff0000198116620100009182900460ff16159091021790555b6040517fa3a32f163befecba5c2abdc2c9d52e8301836380a1dca70ca6070edc0a410820905f90a150505050565b335f908152602b602052604090205460ff166111b55760405162461bcd60e51b8152600401610c2590613b8c565b6111be8761279d565b6111da5760405162461bcd60e51b8152600401610c2590613c3b565b6001600160a01b0388166112005760405162461bcd60e51b8152600401610c2590613c57565b6001600160a01b0389165f908152601560205260409020548711156112375760405162461bcd60e51b8152600401610c2590613c73565b6001600160a01b0389165f9081526015602052604090205461125990886127bf565b6001600160a01b03808b165f9081526015602052604080822093909355908a168152205461128790886127ca565b6001600160a01b03808a165f81815260156020526040908190209390935591518992918c16907f154765d93686b6e616124f28b01e78a69cc8103b435d611ebe55fc6974afb36d906112dc9087908790613c8f565b60405180910390a4505050505050505050565b6112f833611e3b565b611300575f80fd5b81306001600160a01b03821603611315575f80fd5b610b3133848460405180602001604052805f8152506127d5565b61133833610d96565b611340575f80fd5b61104b3382612066565b611352612176565b61135d60128261294b565b1561104b576040516001600160a01b038216907ff2a45c66a3036945900f0347af89e060634880208b658f2ed9315febec08d984905f90a250565b60606113a4601061295f565b905090565b6113b1612176565b565b5f610d588261296b565b6113c5612176565b6113b15f612988565b6001600160a01b0381165f908152601e602090815260409182902080548351818402810184019094528084526060939283018282801561142b57602002820191905f5260205f20905b815481526020019060010190808311611417575b50505050509050919050565b61144033610d96565b610d8c575f80fd5b60606113a4601261295f565b335f908152602b602052604090205460ff166114825760405162461bcd60e51b8152600401610c2590613b8c565b81515f5b818110156114e7575f60295f8684815181106114a4576114a4613bfb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806114df81613c23565b915050611486565b50811561150157600d805460ff19811660ff909116151790555b6040517f082d1cecd20d12a706889aee9dc34c06a6bde80ff57dd000ba1647c6b69b7ba8905f90a1505050565b335f908152602b602052604081205460ff1661155c5760405162461bcd60e51b8152600401610c2590613b8c565b506001600160a01b0381165f908152602b602052604090205460ff165b919050565b610578612176565b336001600160a01b0382160361159a575f80fd5b6001600160a01b0381165f818152602260209081526040808320338085529252808320805460ff19166001179055519092917ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f991a350565b606060058054610c3d90613bc3565b61160a33611a07565b8061162557505f546001600160a01b03620100009091041633145b61162d575f80fd5b61104b816129e2565b6113b133612716565b335f908152602b602052604090205460ff1661166d5760405162461bcd60e51b8152600401610c2590613b8c565b6105788282612a23565b5f54610100900460ff161580801561169557505f54600160ff909116105b806116ae5750303b1580156116ae57505f5460ff166001145b6117115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c25565b5f805460ff191660011790558015611732575f805461ff0019166101001790555b600461173e8a82613d02565b50600561174b8982613d02565b50600885905585515f5b818110156117b7576001602b5f8a848151811061177457611774613bfb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806117af81613c23565b915050611755565b50600d805461ffff191686151561ff001916176101008615150217905560018810156117e1575f80fd5b60068890556117ef33612988565b671c995cd95c9d995960c21b600e55600f805461ffff19166101011790556009805462ffff001916620100008515150217905560408051808201909152600c81526b22a921989a18182a37b5b2b760a11b602082015261184f9030612a82565b61187b6040518060400160405280600a81526020016922a92199182a37b5b2b760b11b81525030612a82565b6118a86040518060400160405280600c81526020016b22a921989a18182a37b5b2b760a11b815250612b26565b6118d36040518060400160405280600a81526020016922a92199182a37b5b2b760b11b815250612b26565b508015611919575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61192c612176565b505050505050565b5f46817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611960610c2e565b805190602001206119856040805180820190915260018152603160f81b602082015290565b80516020918201206040805192830194909452928101919091526060810191909152608081018390523060a082015260c00160408051601f1981840301815291905280516020909101209392505050565b5f6119e35f3385856121d6565b6119fe3333858560405180602001604052805f81525061267e565b50600192915050565b5f610d58600283612b71565b335f908152602b602052604090205460ff16611a415760405162461bcd60e51b8152600401610c2590613b8c565b6009805461ff0019166101008315158102919091179182905560405160ff91909204161515907f4846f6ecab4e3176c0466a75a9251ab1899ed693ba73b0aa19260081e97c9a67905f90a250565b5f611a9a8383612bf2565b9392505050565b335f908152602b602052604090205460ff16611acf5760405162461bcd60e51b8152600401610c2590613b8c565b600f54610100900460ff16611b0b5760405162461bcd60e51b8152602060048201526002602482015261353560f01b6044820152606401610c25565b61079033858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506127d592505050565b335f908152602b602052604090205460ff16611b7a5760405162461bcd60e51b8152600401610c2590613b8c565b81515f5b81811015611be0576001602a5f868481518110611b9d57611b9d613bfb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580611bd881613c23565b915050611b7e565b508115611c0357600d805461ff001981166101009182900460ff16159091021790555b6040517f9d4c2e9cfc5810854c7be050924230c59f79ee5849fbb71f1c80f75907c7c169905f90a1505050565b5f81604051602001611c429190613dbd565b6040516020818303038152906040528051906020012083604051602001611c699190613dbd565b6040516020818303038152906040528051906020012014905092915050565b611c90612176565b611c9b601082612c69565b1561104b576040516001600160a01b038216907fdfd9d11b5f27a5788534fa4067c94acba57d51c580350e038ef0d5e7ee064ba0905f90a250565b335f908152602b602052604090205460ff1661104b5760405162461bcd60e51b8152600401610c2590613b8c565b335f908152602b602052604090205460ff16611d325760405162461bcd60e51b8152600401610c2590613b8c565b81515f5b81811015611d9857600160295f868481518110611d5557611d55613bfb565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580611d9081613c23565b915050611d36565b508115611db257600d805460ff19811660ff909116151790555b6040517fc706852c47659cb7b77415b22a552d338aa41bc1719ce620596c33a59258305e905f90a1505050565b611de881611c88565b61104b815b611df5612176565b611e00601282612c69565b1561104b576040516001600160a01b038216907fed45a0db84376eb1a392e8aba1004c33a8c682d2b458053f523c688fd895e9b1905f90a250565b5f610d58601083612155565b5f610d5882612c7d565b611e5e60018686866121d6565b6107a43386868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061267e92505050565b611ea8612176565b6001600160a01b038116611f0d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c25565b61104b81612988565b5f6113a4612c9a565b335f908152602b602052604090205460ff16611f4d5760405162461bcd60e51b8152600401610c2590613b8c565b6001600160a01b0382165f818152602b6020908152604091829020805460ff19168515159081179091558251938452908301527f01552c91ec5619726a2406e15e2cbc2eabd254577be4632813792cd2f35957f3910160405180910390a15050565b611fb7612176565b611fc260108261294b565b1561104b576040516001600160a01b038216907f7c45ad7a0fff014220c921bdba3fb0c0aab902df8a5efb090b69db09d1256b8b905f90a250565b336001600160a01b03821603612011575f80fd5b6001600160a01b0381165f818152602260209081526040808320338085529252808320805460ff19169055519092917f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa191a350565b61206f8161279d565b61208b5760405162461bcd60e51b8152600401610c2590613c3b565b60075461209890826127bf565b6007556001600160a01b0382165f908152601560205260409020546120bd90826127bf565b6001600160a01b0383165f908152601560205260409020556120de33610d96565b1561211c576040516001600160a01b0383169082907fca191c0d7882520fe92d4ee2952509a5b528728f4ae3d71521c967827a9a82a0905f90a35050565b6040516001600160a01b0383169082907f0bcfa9a60f30cc4cc988377198c72a449d54bbe2480a91bc2462cafe64692287905f90a35050565b6001600160a01b0381165f9081526001830160205260408120541515611a9a565b5f546001600160a01b03620100009091041633146113b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c25565b335f908152602b602052604090205460ff161561223457600954610100900460ff16156122345760405162461bcd60e51b815260206004820152600c60248201526b333937bd32b7103a37b5b2b760a11b6044820152606401610c25565b60095462010000900460ff16156122d7576001600160a01b0383165f90815260176020526040902054156122d7576001600160a01b0383165f9081526017602090815260408083205460159092529091205461229090836127bf565b10156122d75760405162461bcd60e51b81526020600482015260166024820152754e6f7420656e6f756768206672656520746f6b656e7360501b6044820152606401610c25565b831561250f57335f908152602b602052604090205460ff161561079057600d5460ff16156123b3576123088261296b565b15156001146123595760405162461bcd60e51b815260206004820152601c60248201527f5265636569766572206973206e6f7420696e2077686974654c697374000000006044820152606401610c25565b6123628361296b565b15156001146123b35760405162461bcd60e51b815260206004820152601a60248201527f53656e646572206973206e6f7420696e2077686974654c6973740000000000006044820152606401610c25565b600d54610100900460ff1615612463576123cc83612c7d565b156124125760405162461bcd60e51b815260206004820152601660248201527514d95b99195c881a5cc81a5b88189b1858dad31a5cdd60521b6044820152606401610c25565b61241b82612c7d565b156124635760405162461bcd60e51b8152602060048201526018602482015277149958d95a5d995c881a5cc81a5b88189b1858dad31a5cdd60421b6044820152606401610c25565b6001600160a01b0383165f9081526016602090815260408083203384529091529020548111156124ba5760405162461bcd60e51b8152602060048201526002602482015261353360f01b6044820152606401610c25565b6001600160a01b0383165f9081526016602090815260408083203384529091529020546124e790826127bf565b6001600160a01b0384165f908152601660209081526040808320338452909152902055610790565b600d5460ff16156125ce576125238261296b565b15156001146125745760405162461bcd60e51b815260206004820152601c60248201527f5265636569766572206973206e6f7420696e2077686974654c697374000000006044820152606401610c25565b61257d8361296b565b15156001146125ce5760405162461bcd60e51b815260206004820152601a60248201527f53656e646572206973206e6f7420696e2077686974654c6973740000000000006044820152606401610c25565b600d54610100900460ff1615610790576125e783612c7d565b1561262d5760405162461bcd60e51b815260206004820152601660248201527514d95b99195c881a5cc81a5b88189b1858dad31a5cdd60521b6044820152606401610c25565b61263682612c7d565b156107905760405162461bcd60e51b8152602060048201526018602482015277149958d95a5d995c881a5cc81a5b88189b1858dad31a5cdd60421b6044820152606401610c25565b6001600160a01b0384165f90815260156020526040902054808311156126b65760405162461bcd60e51b8152600401610c2590613c73565b6126c1858585612cc2565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161270691815260200190565b60405180910390a3505050505050565b612721600282612de2565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692905f90a250565b6009805462ff0000191662010000831515908102919091179091556040517fc6cb6b2a86ca168bb9c414664cb88d9494d69b23a43d2b9a9b95b26aae372c5a905f90a250565b6006545f9082906127b8906127b28382612e63565b90612e6e565b1492915050565b5f611a9a8284613dd8565b5f611a9a8284613deb565b6127de8261279d565b6127fa5760405162461bcd60e51b8152600401610c2590613c3b565b6001600160a01b0383166128205760405162461bcd60e51b8152600401610c2590613c57565b60085460075461283090846127ca565b111561287e5760405162461bcd60e51b815260206004820152601f60248201527f457863656564206d6178696d756d206e756d626572206f6620746f6b656e73006044820152606401610c25565b60075461288b90836127ca565b6007556001600160a01b0383165f908152601560205260409020546128b090836127ca565b6001600160a01b0384165f908152601560205260409020556128d184611e3b565b156129105760405182906001600160a01b038516907f0d6b79271151a629ed74b4e681831f936a717e90caf14f15c7293043dab75c00905f90a3610790565b60405182906001600160a01b038516907f4e41c9552e57df1a1b1373aa10ab100818453f016baf09f281b1ce98978453f6905f90a350505050565b5f611a9a836001600160a01b038416612e79565b60605f611a9a83612f5c565b6001600160a01b03165f9081526029602052604090205460ff1690565b5f80546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6129ed600282612fb3565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6905f90a250565b600d805461ffff191683151561ff001916176101008315158102919091179182905560405160ff9183048216151592919091161515907f7e1e367a3566ce0d20b5e5c353f777f0d5e022cba6ef8b35b68d0dfe6e8f892d905f90a35050565b5f82604051602001612a949190613dbd565b60408051808303601f190181529082905280516020909101206329965a1d60e01b8252306004830152602482018190526001600160a01b03841660448301529150731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d906064015f604051808303815f87803b158015612b0b575f80fd5b505af1158015612b1d573d5f803e3d5ffd5b50505050505050565b6001805f83604051602001612b3b9190613dbd565b60408051808303601f190181529181528151602092830120835290820192909252015f20805460ff191691151591909117905550565b5f6001600160a01b038216612bd35760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610c25565b506001600160a01b03165f908152602091909152604090205460ff1690565b5f816001600160a01b0316836001600160a01b03161480612c3757506001600160a01b038084165f9081526022602090815260408083209386168352929052205460ff165b80611a9a5750600f5460ff168015611a9a575050506001600160a01b03165f9081526024602052604090205460ff1690565b5f611a9a836001600160a01b03841661302e565b6001600160a01b03165f908152602a602052604090205460ff1690565b465f908152600360205260408120548015612cb457919050565b612cbc613073565b91505090565b612ccb8161279d565b612ce75760405162461bcd60e51b8152600401610c2590613c3b565b6001600160a01b038216612d0d5760405162461bcd60e51b8152600401610c2590613c57565b6001600160a01b0383165f90815260156020526040902054811115612d445760405162461bcd60e51b8152600401610c2590613c73565b6001600160a01b0383165f90815260156020526040902054612d6690826127bf565b6001600160a01b038085165f908152601560205260408082209390935590841681522054612d9490826127ca565b6001600160a01b038084165f81815260156020526040808220949094559251849391928716917fb4d2a64e10e2405e822beac85347a2cbded0a4997a01a656b3f875894bd0d97891a4505050565b612dec8282612b71565b612e425760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610c25565b6001600160a01b03165f90815260209190915260409020805460ff19169055565b5f611a9a8284613dfe565b5f611a9a8284613e1d565b5f8181526001830160205260408120548015612f53575f612e9b600183613dd8565b85549091505f90612eae90600190613dd8565b9050808214612f0d575f865f018281548110612ecc57612ecc613bfb565b905f5260205f200154905080875f018481548110612eec57612eec613bfb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080612f1e57612f1e613e34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610d58565b5f915050610d58565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561142b57602002820191905f5260205f20908154815260200190600101908083116114175750505050509050919050565b612fbd8282612b71565b1561300a5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610c25565b6001600160a01b03165f90815260209190915260409020805460ff19166001179055565b5f818152600183016020526040812054610fc157508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610d58565b5f468161307e611934565b5f9283526003602052604090922082905550919050565b5f8083601f8401126130a5575f80fd5b5081356001600160401b038111156130bb575f80fd5b6020830191508360208285010111156130d2575f80fd5b9250929050565b5f805f80606085870312156130ec575f80fd5b8435935060208501356001600160401b03811115613108575f80fd5b61311487828801613095565b9598909750949560400135949350505050565b5f5b83811015613141578181015183820152602001613129565b50505f910152565b5f8151808452613160816020860160208601613127565b601f01601f19169290920160200192915050565b602081525f611a9a6020830184613149565b80356001600160a01b0381168114611579575f80fd5b5f80604083850312156131ad575f80fd5b6131b683613186565b946020939093013593505050565b5f80604083850312156131d5575f80fd5b823591506131e560208401613186565b90509250929050565b5f602082840312156131fe575f80fd5b611a9a82613186565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561324357613243613207565b604052919050565b5f6001600160401b0382111561326357613263613207565b5060051b60200190565b5f82601f83011261327c575f80fd5b8135602061329161328c8361324b565b61321b565b82815260059290921b840181019181810190868411156132af575f80fd5b8286015b848110156132d1576132c481613186565b83529183019183016132b3565b509695505050505050565b80358015158114611579575f80fd5b5f80604083850312156132fc575f80fd5b82356001600160401b03811115613311575f80fd5b61331d8582860161326d565b9250506131e5602084016132dc565b5f805f6060848603121561333e575f80fd5b8335925061334e60208501613186565b9150604084013590509250925092565b5f8083601f84011261336e575f80fd5b5081356001600160401b03811115613384575f80fd5b6020830191508360208260051b85010111156130d2575f80fd5b5f805f604084860312156133b0575f80fd5b8335925060208401356001600160401b038111156133cc575f80fd5b6133d88682870161335e565b9497909650939450505050565b5f805f606084860312156133f7575f80fd5b8335925061340760208501613186565b915061341560408501613186565b90509250925092565b5f6020828403121561342e575f80fd5b5035919050565b5f805f60608486031215613447575f80fd5b61345084613186565b925061334e60208501613186565b5f805f8060608587031215613471575f80fd5b61347a85613186565b93506020850135925060408501356001600160401b0381111561349b575f80fd5b6134a787828801613095565b95989497509550505050565b5f602082840312156134c3575f80fd5b611a9a826132dc565b5f805f606084860312156134de575f80fd5b83356001600160401b03808211156134f4575f80fd5b6135008783880161326d565b9450602091508186013581811115613516575f80fd5b86019050601f81018713613528575f80fd5b803561353661328c8261324b565b81815260059190911b82018301908381019089831115613554575f80fd5b928401925b8284101561358c5783356bffffffffffffffffffffffff8116811461357d575f8081fd5b82529284019290840190613559565b8096505050505050613415604085016132dc565b5f805f805f805f805f60c08a8c0312156135b8575f80fd5b6135c18a613186565b98506135cf60208b01613186565b975060408a0135965060608a01356001600160401b03808211156135f1575f80fd5b6135fd8d838e01613095565b909850965060808c0135915080821115613615575f80fd5b6136218d838e01613095565b909650945060a08c0135915080821115613639575f80fd5b506136468c828d01613095565b915080935050809150509295985092959850929598565b5f805f8060608587031215613670575f80fd5b843593506020850135925060408501356001600160401b0381111561349b575f80fd5b5f805f805f608086880312156136a7575f80fd5b853594506136b760208701613186565b93506040860135925060608601356001600160401b038111156136d8575f80fd5b6136e488828901613095565b969995985093965092949392505050565b602080825282518282018190525f9190848201906040850190845b818110156137355783516001600160a01b031683529284019291840191600101613710565b50909695505050505050565b602080825282518282018190525f9190848201906040850190845b818110156137355783518352928401929184019160010161375c565b5f805f805f805f8060c0898b03121561378f575f80fd5b8835975061379f60208a01613186565b96506137ad60408a01613186565b95506060890135945060808901356001600160401b03808211156137cf575f80fd5b6137db8c838d01613095565b909650945060a08b01359150808211156137f3575f80fd5b506138008b828c01613095565b999c989b5096995094979396929594505050565b5f8060408385031215613825575f80fd5b61382e83613186565b91506131e5602084016132dc565b5f806040838503121561384d575f80fd5b61382e836132dc565b5f82601f830112613865575f80fd5b81356001600160401b0381111561387e5761387e613207565b613891601f8201601f191660200161321b565b8181528460208386010111156138a5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b0312156138d9575f80fd5b88356001600160401b03808211156138ef575f80fd5b6138fb8c838d01613856565b995060208b0135915080821115613910575f80fd5b61391c8c838d01613856565b985060408b0135975060608b0135915080821115613938575f80fd5b506139458b828c0161326d565b9550506080890135935061395b60a08a016132dc565b925061396960c08a016132dc565b915061397760e08a016132dc565b90509295985092959890939650565b5f805f805f8060a0878903121561399b575f80fd5b6139a487613186565b955060208701356001600160401b038111156139be575f80fd5b6139ca89828a01613095565b90965094506139dd9050604088016132dc565b92506139eb606088016132dc565b91506139f9608088016132dc565b90509295509295509295565b606081525f613a176060830186613149565b60208301949094525060400152919050565b5f8060408385031215613a3a575f80fd5b613a4383613186565b91506131e560208401613186565b5f8060408385031215613a62575f80fd5b82356001600160401b0380821115613a78575f80fd5b613a8486838701613856565b93506020850135915080821115613a99575f80fd5b50613aa685828601613856565b9150509250929050565b5f805f60408486031215613ac2575f80fd5b8335925060208401356001600160401b03811115613ade575f80fd5b6133d886828701613095565b5f8060208385031215613afb575f80fd5b82356001600160401b03811115613b10575f80fd5b613b1c8582860161335e565b90969095509350505050565b5f805f805f60808688031215613b3c575f80fd5b613b4586613186565b94506136b760208701613186565b5f60208284031215613b63575f80fd5b81356001600160401b03811115613b78575f80fd5b613b8484828501613856565b949350505050565b6020808252601b908201527f63616c6c6572206973206e6f742061646d696e4f70657261746f720000000000604082015260600190565b600181811c90821680613bd757607f821691505b602082108103613bf557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201613c3457613c34613c0f565b5060010190565b602080825260029082015261035360f41b604082015260600190565b602080825260029082015261353760f01b604082015260600190565b6020808252600290820152611a9960f11b604082015260600190565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b601f821115610b31575f81815260208120601f850160051c81016020861015613ce35750805b601f850160051c820191505b8181101561192c57828155600101613cef565b81516001600160401b03811115613d1b57613d1b613207565b613d2f81613d298454613bc3565b84613cbd565b602080601f831160018114613d62575f8415613d4b5750858301515b5f19600386901b1c1916600185901b17855561192c565b5f85815260208120601f198616915b82811015613d9057888601518255948401946001909101908401613d71565b5085821015613dad57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251613dce818460208701613127565b9190910192915050565b81810381811115610d5857610d58613c0f565b80820180821115610d5857610d58613c0f565b5f82613e1857634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610d5857610d58613c0f565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220eb0ac650a80ad757a277204125c0d5ac4533b32b5e8ae6fb0343a878cea0f38c64736f6c63430008140033