@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 288 kB
JSON
{"abi":[{"type":"function","name":"AMOUNT_TO_FUND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"ERC20","inputs":[],"outputs":[{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int8","internalType":"int8"},{"name":"assetBridgeAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ETH_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_USER_EXISTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2_MAINNET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2_TESTNET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE","inputs":[],"outputs":[{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int8","internalType":"int8"},{"name":"assetBridgeAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"coreSpotFromChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"erc20","type":"uint64","internalType":"uint64"},{"name":"hype","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eidFromChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ethEid","type":"uint32","internalType":"uint32"},{"name":"hlpEid","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hyperLiquidComposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HyperLiquidComposer"}],"stateMutability":"view"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OFTMock"}],"stateMutability":"view"},{"type":"function","name":"recovery","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"typeConversionTest","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract TypeConversionTest"}],"stateMutability":"view"},{"type":"function","name":"userA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f8054909116909117905560248054600160a01b600160e01b0319166503782dace9d960b21b1790556025805466038d7ea4c680006001600160401b031990911617905560c06040526005608090815264757365724160d81b60a05262000078906200013c565b602880546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b6020820152620000bf906200013c565b602980546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152677265636f7665727960c01b602082015262000109906200013c565b602a80546001600160a01b0319166001600160a01b039290921691909117905534801562000135575f80fd5b5062000319565b5f62000148826200014f565b5092915050565b5f80826040516020016200016491906200028a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620001ce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f49190620002a7565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620002329085908790600401620002d6565b5f604051808303815f87803b1580156200024a575f80fd5b505af11580156200025d573d5f803e3d5ffd5b50505050915091565b5f5b838110156200028257818101518382015260200162000268565b50505f910152565b5f82516200029d81846020870162000266565b9190910192915050565b5f60208284031215620002b8575f80fd5b81516001600160a01b0381168114620002cf575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401526200030481606085016020870162000266565b601f01601f1916919091016060019392505050565b61b75f80620003275f395ff3fe608060405234801562000010575f80fd5b50600436106200022c575f3560e01c8063929c0579116200013b578063c1d1ead811620000c7578063ddceafa91162000093578063e20c9f711162000077578063e20c9f71146200069d578063fa7626d414620006a7578063fbe021a114620006b5575f80fd5b8063ddceafa9146200065b578063deb22e9a146200067c575f80fd5b8063c1d1ead814620005b9578063c203ccab14620005d5578063cb1a295f14620005f1578063cc4aa2041462000612575f80fd5b8063b5508aa91162000107578063b5508aa9146200055d578063ba414fa61462000567578063ba8726791462000582578063bb641b3e146200058c575f80fd5b8063929c057914620004e45780639b5215f61462000511578063a09e74301462000532578063b0464fdc1462000553575f80fd5b80635f60057d11620001bb5780637ecd9ac311620001875780637ecd9ac3146200046757806385226c8114620004835780639127ace2146200049c578063916a17c614620004cb575f80fd5b80635f60057d146200036a57806366d9a9a014620003bc57806376e86e7214620003d55780637773fb73146200045d575f80fd5b80632ade388011620001fb5780632ade388014620002f6578063318f405a146200030f5780633e5e3c2314620003565780633f7286f41462000360575f80fd5b80630a85348314620002305780630a9254e414620002925780631ed7831c146200029e57806325996dae14620002b7575b5f80fd5b6200026c6200024136600462001eb5565b60276020525f908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff9384168152929091166020830152015b60405180910390f35b6200029c620006d6565b005b620002a862001459565b60405162000289919062001ecd565b602a54620002e09074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff909116815260200162000289565b62000300620014c8565b60405162000289919062001f97565b602b54620003309073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000289565b620002a86200161d565b620002a86200168a565b6200039e6200037b36600462001eb5565b60266020525f908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff93841681529290911660208301520162000289565b620003c6620016f7565b60405162000289919062002101565b6021546200041e9067ffffffffffffffff8116906801000000000000000081045f0b906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1683565b6040805167ffffffffffffffff90941684525f9290920b602084015273ffffffffffffffffffffffffffffffffffffffff169082015260600162000289565b6200033061081081565b6200033073333333333333333333333333333333333333333381565b6200048d6200187c565b604051620002899190620021aa565b602554620004b19067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200162000289565b620004d562001951565b6040516200028991906200222e565b602a54620002e0907801000000000000000000000000000000000000000000000000900463ffffffff1681565b602254620003309073ffffffffffffffffffffffffffffffffffffffff1681565b602354620003309073ffffffffffffffffffffffffffffffffffffffff1681565b620004d562001a58565b6200048d62001b5f565b6200057162001c34565b604051901515815260200162000289565b6200033061080181565b602454620004b19074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b6200033073f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b62000330733a73033c0b1407574c76bdbac67f126f6b4a9aa981565b602954620003309073ffffffffffffffffffffffffffffffffffffffff1681565b6020546200041e9067ffffffffffffffff8116906801000000000000000081045f0b906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1683565b602a54620003309073ffffffffffffffffffffffffffffffffffffffff1681565b602854620003309073ffffffffffffffffffffffffffffffffffffffff1681565b620002a862001d08565b601f54620005719060ff1681565b602454620003309073ffffffffffffffffffffffffffffffffffffffff1681565b604080518082018252619ce18152619daa60208083019182526103e65f818152602680845294517f113a6407f23900cfa1ecac751a02199ded2b9291b7b61d7b3fc27cad18581d048054955163ffffffff9283167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000978816176401000000009184168202179091558751808901895261765d815261769f8187019081526103e780865298875290517f354415ee754a59ff734517214ff8c4e3c5311a1050a5d2254382ba8bdca2307680549251918516929098169190911792160217909355845180860186526104da8152610451818401908152828552602780855291517f81f48bd84279ade89ca0299913d9e40d06f4ae51ee08f3cd6f968120d220e10d8054925167ffffffffffffffff9283167fffffffffffffffffffffffffffffffff0000000000000000000000000000000094851617680100000000000000009184168202179091558851808a0190995260eb89526096898701908152979096529190935294517fcb63f41d83a6606379654c30ef8a1498bf816351aa303c37a41e329cc6e7a103805495519187169590931694909417939094169091029190911790554614801590620008aa5750466103e714155b1562000b3e576040517ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5250435f55524c5f48595045524c49515549440000000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa15801562000946573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200098d9190810190620022f9565b6040517f98680034000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90639868003490620009e2908490600401620023cb565b6020604051808303815f875af192505050801562000a3d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925262000a3a91810190620023e6565b60015b62000b3a5762000ab96040518060400160405280601081526020017f466f726b696e67206d61696e6e65742000000000000000000000000000000000815250826040518060400160405280600781526020017f206661696c65640000000000000000000000000000000000000000000000000081525062001d75565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b15801562000b1d575f80fd5b505af115801562000b30573d5f803e3d5ffd5b5050505062000b3c565b505b505b737109709ecfa91a80626ff3989d68f67f5b1dd12d73ffffffffffffffffffffffffffffffffffffffff1663b4d6c78261080160405162000b7f9062001e6f565b604051809103905ff08015801562000b99573d5f803e3d5ffd5b5073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b815260040162000bea929190620023fe565b5f604051808303815f87803b15801562000c02575f80fd5b505af115801562000c15573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d73ffffffffffffffffffffffffffffffffffffffff1663b4d6c78261081060405162000c5a9062001e7d565b604051809103905ff08015801562000c74573d5f803e3d5ffd5b5073ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b815260040162000cc5929190620023fe565b5f604051808303815f87803b15801562000cdd575f80fd5b505af115801562000cf0573d5f803e3d5ffd5b50505050466103e61462000d1957733a73033c0b1407574c76bdbac67f126f6b4a9aa962000d2f565b73f9e1815f151024bde4b7c10bac10e8ba9f6b53e15b602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055465f8181526026602090815260408083208054602a80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff811663ffffffff9384167401000000000000000000000000000000000000000002908117835593547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9091167fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9094169390931764010000000090930490911678010000000000000000000000000000000000000000000000000291909117905560278252918290205482516060810190935267ffffffffffffffff80821680855294680100000000000000009092041692918201906103e61462000e9357600a62000e96565b60095b5f0b815260200162000ea88462001e11565b73ffffffffffffffffffffffffffffffffffffffff9081169091528151602080548482015160409586015185166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff60ff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000093841667ffffffffffffffff968716171782161783558551606081018752938716808552600a9385019390935273222222222222222222222222222222222222222293860193909352602180547c2222222222222222222222222222222222222222000000000000000000680a00000000000000009190931690931792909217909216919091179055602b549151911690339062000fd19062001e8b565b62000fde92919062002436565b604051809103905ff08015801562000ff8573d5f803e3d5ffd5b50602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905560205460405167ffffffffffffffff8216916801000000000000000090045f0b90620010699062001e99565b73ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301525f0b6040820152606001604051809103905ff080158015620010b8573d5f803e3d5ffd5b50602380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040516200110c9062001ea7565b604051809103905ff08015801562001126573d5f803e3d5ffd5b50602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161781556020546040517f312f619f00000000000000000000000000000000000000000000000000000000815269010000000000000000008204909316600484015267ffffffffffffffff9081169183019190915260448201526108019063312f619f906064015f604051808303815f87803b158015620011e3575f80fd5b505af1158015620011f6573d5f803e3d5ffd5b50506021546040517f312f619f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6901000000000000000000830416600482015267ffffffffffffffff91821660248201526044810191909152610801925063312f619f91506064015f604051808303815f87803b15801562001289575f80fd5b505af11580156200129c573d5f803e3d5ffd5b50506028546040517f2501ecee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152600160248201526108109250632501ecee91506044015f604051808303815f87803b15801562001312575f80fd5b505af115801562001325573d5f803e3d5ffd5b50506029546040517f2501ecee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152600160248201526108109250632501ecee91506044015f604051808303815f87803b1580156200139b575f80fd5b505af1158015620013ae573d5f803e3d5ffd5b5050602b546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268056bc75e2d631000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b1580156200143e575f80fd5b505af115801562001451573d5f803e3d5ffd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015620014be57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162001492575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562001614575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620015fc578382905f5260205f200180546200156a90620024e0565b80601f01602080910402602001604051908101604052809291908181526020018280546200159890620024e0565b8015620015e75780601f10620015bd57610100808354040283529160200191620015e7565b820191905f5260205f20905b815481529060010190602001808311620015c957829003601f168201915b5050505050815260200190600101906200154a565b505050508152505081526020019060010190620014eb565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015620014be57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162001492575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620014be57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162001492575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562001614578382905f5260205f2090600202016040518060400160405290815f820180546200174d90620024e0565b80601f01602080910402602001604051908101604052809291908181526020018280546200177b90620024e0565b8015620017ca5780601f10620017a057610100808354040283529160200191620017ca565b820191905f5260205f20905b815481529060010190602001808311620017ac57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200186357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200180f5790505b505050505081525050815260200190600101906200171a565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562001614578382905f5260205f20018054620018bf90620024e0565b80601f0160208091040260200160405190810160405280929190818152602001828054620018ed90620024e0565b80156200193c5780601f1062001912576101008083540402835291602001916200193c565b820191905f5260205f20905b8154815290600101906020018083116200191e57829003601f168201915b5050505050815260200190600101906200189f565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562001614575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562001a3f57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620019eb5790505b5050505050815250508152602001906001019062001974565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562001614575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562001b4657602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001af25790505b5050505050815250508152602001906001019062001a7b565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562001614578382905f5260205f2001805462001ba290620024e0565b80601f016020809104026020016040519081016040528092919081815260200182805462001bd090620024e0565b801562001c1f5780601f1062001bf55761010080835404028352916020019162001c1f565b820191905f5260205f20905b81548152906001019060200180831162001c0157829003601f168201915b50505050508152602001906001019062001b82565b6008545f9060ff161562001c4c575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562001cdb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001d019190620023e6565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620014be57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162001492575050505050905090565b62001e0c83838360405160240162001d909392919062002533565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ced7cef0000000000000000000000000000000000000000000000000000000017905262001e42565b505050565b5f62001e3c67ffffffffffffffff83167320000000000000000000000000000000000000006200257b565b92915050565b62001e4d8162001e50565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6102bb80620025b583390190565b6101be806200287083390190565b613f138062002a2e83390190565b612c41806200694183390190565b6121a8806200958283390190565b5f6020828403121562001ec6575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b8181101562001f1c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162001ee8565b50909695505050505050565b5f5b8381101562001f4457818101518382015260200162001f2a565b50505f910152565b5f815180845262001f6581602086016020860162001f28565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602080825282518282018190525f919060409081850190600581811b87018401888601875b8481101562002094577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a84030186528151805173ffffffffffffffffffffffffffffffffffffffff168452880151888401889052805188850181905290890190606081871b8601810191908601905f5b818110156200207d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08885030183526200206a84865162001f4c565b948d01949350918c01916001016200202d565b505050968901969350509087019060010162001fbc565b50909998505050505050505050565b5f815180845260208085019450602084015f5b83811015620020f65781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101620020b6565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156200219c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815180518785526200216d8886018262001f4c565b91890151858303868b0152919050620021878183620020a3565b96890196945050509086019060010162002128565b509098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101562002221577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200220e85835162001f4c565b94509285019290850190600101620021d1565b5092979650505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156200219c578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052620022b887850182620020a3565b958801959350509086019060010162002255565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f602082840312156200230a575f80fd5b815167ffffffffffffffff8082111562002322575f80fd5b818401915084601f83011262002336575f80fd5b8151818111156200234b576200234b620022cc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620023945762002394620022cc565b81604052828152876020848701011115620023ad575f80fd5b620023c083602083016020880162001f28565b979650505050505050565b602081525f620023df602083018462001f4c565b9392505050565b5f60208284031215620023f7575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6200242e604083018462001f4c565b949350505050565b608081525f6200247360808301600481527f7465737400000000000000000000000000000000000000000000000000000000602082015260400190565b8281036020840152620024b081600481527f7465737400000000000000000000000000000000000000000000000000000000602082015260400190565b91505073ffffffffffffffffffffffffffffffffffffffff80851660408401528084166060840152509392505050565b600181811c90821680620024f557607f821691505b6020821081036200252d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b606081525f62002547606083018662001f4c565b82810360208401526200255b818662001f4c565b9050828103604084015262002571818562001f4c565b9695505050505050565b8082018082111562001e3c577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfe608060405234801561000f575f80fd5b5061029e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063312f619f146100cb575b5f366060828061003984826101f3565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020818152604080832067ffffffffffffffff8516845282529182902091519395509193506100ad92909101905467ffffffffffffffff8082168352604082811c8216602085015260809290921c169082015260600190565b60405160208183030381529060405292505050915050805190602001f35b6101b16100d9366004610226565b6040805160608101825267ffffffffffffffff92831681525f602080830182815283850183815273ffffffffffffffffffffffffffffffffffffffff909816835282825284832096861683529590529190912090518154935194518316700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff95841668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951691909316179290921792909216919091179055565b005b73ffffffffffffffffffffffffffffffffffffffff811681146101d4575f80fd5b50565b803567ffffffffffffffff811681146101ee575f80fd5b919050565b5f8060408385031215610204575f80fd5b823561020f816101b3565b915061021d602084016101d7565b90509250929050565b5f805f60608486031215610238575f80fd5b8335610243816101b3565b9250610251602085016101d7565b915061025f604085016101d7565b9050925092509256fea2646970667358221220d5b9ba32438724b70d20ac7197875ff3889106c2524e595f86d6e6608fa1001664736f6c63430008160033608060405234801561000f575f80fd5b506101a18061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80632501ecee14610085575b5f36606082610038838261010e565b73ffffffffffffffffffffffffffffffffffffffff165f908152602081815260409182902054825160ff909116151581830152825180820383018152908301909252815195500192505050f35b6100e8610093366004610130565b73ffffffffffffffffffffffffffffffffffffffff919091165f90815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b73ffffffffffffffffffffffffffffffffffffffff8116811461010b575f80fd5b50565b5f6020828403121561011e575f80fd5b8135610129816100ea565b9392505050565b5f8060408385031215610141575f80fd5b823561014c816100ea565b915060208301358015158114610160575f80fd5b80915050925092905056fea264697066735822122035c0fff1825d88eb4bde8570970797b145c9dca642f89b4781127cecbb5d309764736f6c6343000816003360c060405234801562000010575f80fd5b5060405162003f1338038062003f138339810160408190526200003391620002c2565b83838383838360128484818181818d6001600160a01b0381166200007057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200007b8162000191565b506001600160a01b038083166080528116620000aa57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e1906024015f604051808303815f87803b158015620000ef575f80fd5b505af115801562000102573d5f803e3d5ffd5b50505050505050506200011a620001e060201b60201c565b60ff168360ff16101562000141576040516301e9714b60e41b815260040160405180910390fd5b6200014e60068462000360565b6200015b90600a6200047b565b60a052506008915062000171905083826200051c565b5060096200018082826200051c565b5050505050505050505050620005e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000209575f80fd5b81516001600160401b0380821115620002265762000226620001e5565b604051601f8301601f19908116603f01168101908282118183101715620002515762000251620001e5565b81604052838152602092508660208588010111156200026e575f80fd5b5f91505b8382101562000291578582018301518183018401529082019062000272565b5f602085830101528094505050505092915050565b80516001600160a01b0381168114620002bd575f80fd5b919050565b5f805f8060808587031215620002d6575f80fd5b84516001600160401b0380821115620002ed575f80fd5b620002fb88838901620001f9565b9550602087015191508082111562000311575f80fd5b506200032087828801620001f9565b9350506200033160408601620002a6565b91506200034160608601620002a6565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156200037c576200037c6200034c565b92915050565b600181815b80851115620003c257815f1904821115620003a657620003a66200034c565b80851615620003b457918102915b93841c939080029062000387565b509250929050565b5f82620003da575060016200037c565b81620003e857505f6200037c565b81600181146200040157600281146200040c576200042c565b60019150506200037c565b60ff8411156200042057620004206200034c565b50506001821b6200037c565b5060208310610133831016604e8410600b841016171562000451575081810a6200037c565b6200045d838362000382565b805f19048211156200047357620004736200034c565b029392505050565b5f6200048b60ff841683620003ca565b9392505050565b600181811c90821680620004a757607f821691505b602082108103620004c657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200051757805f5260205f20601f840160051c81016020851015620004f35750805b601f840160051c820191505b8181101562000514575f8155600101620004ff565b50505b505050565b81516001600160401b03811115620005385762000538620001e5565b620005508162000549845462000492565b84620004cc565b602080601f83116001811462000586575f84156200056e5750858301515b5f19600386901b1c1916600185901b178555620005e0565b5f85815260208120601f198616915b82811015620005b65788860151825594840194600190910190840162000595565b5085821015620005d457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60805160a0516138c3620006505f395f81816106be01528181611e7f01528181611ef1015261217e01525f818161056e01528181610b050152818161122e01528181611554015281816119af015281816122d2015281816124ab015261259301526138c35ff3fe6080604052600436106102c1575f3560e01c80637d25a05e11610170578063bb0b6a53116100d1578063d045a0dc11610087578063f2fde38b11610062578063f2fde38b1461087c578063fc0c546a146104f7578063ff7bd03d1461089b575f80fd5b8063d045a0dc146107f9578063d42438851461080c578063dd62ed3e1461082b575f80fd5b8063bd815db0116100b7578063bd815db0146107a6578063c7c7f5b3146107b9578063ca5eb5e1146107da575f80fd5b8063bb0b6a531461075c578063bc70b35414610787575f80fd5b8063963efcaa11610126578063a9059cbb1161010c578063a9059cbb146106f2578063b731ea0a14610711578063b98bd0701461073d575f80fd5b8063963efcaa146106ad5780639f68b964146106e0575f80fd5b8063857749b011610156578063857749b01461065d5780638da5cb5b1461067057806395d89b4114610699575f80fd5b80637d25a05e1461060457806382413eac1461063e575f80fd5b806323b872dd116102255780635535d461116101db5780636fc1b31e116101b65780636fc1b31e1461059057806370a08231146105af578063715018a6146105f0575f80fd5b80635535d461146105095780635a0dfe4d146105285780635e280f111461055d575f80fd5b80633400288b1161020b5780633400288b146104ac5780633b6f743b146104cb57806352ae2879146104f7575f80fd5b806323b872dd1461046c578063313ce5671461048b575f80fd5b8063134d4f251161027a57806317442b701161026057806317442b701461041957806318160ddd1461043a5780631f5e133414610458575f80fd5b8063134d4f25146103b2578063156a0d0f146103d9575f80fd5b80630d35b415116102aa5780630d35b4151461031e578063111ecdad1461034c57806313137d651461039d575f80fd5b806306fdde03146102c5578063095ea7b3146102ef575b5f80fd5b3480156102d0575f80fd5b506102d96108ba565b6040516102e6919061278e565b60405180910390f35b3480156102fa575f80fd5b5061030e6103093660046127c1565b61094a565b60405190151581526020016102e6565b348015610329575f80fd5b5061033d610338366004612801565b610963565b6040516102e693929190612833565b348015610357575f80fd5b506004546103789073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e6565b6103b06103ab36600461293d565b610b03565b005b3480156103bd575f80fd5b506103c6600281565b60405161ffff90911681526020016102e6565b3480156103e4575f80fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260016020820152016102e6565b348015610424575f80fd5b50604080516001815260026020820152016102e6565b348015610445575f80fd5b506007545b6040519081526020016102e6565b348015610463575f80fd5b506103c6600181565b348015610477575f80fd5b5061030e6104863660046129d6565b610c02565b348015610496575f80fd5b5060125b60405160ff90911681526020016102e6565b3480156104b7575f80fd5b506103b06104c6366004612a2c565b610c27565b3480156104d6575f80fd5b506104ea6104e5366004612a53565b610c3d565b6040516102e69190612aa2565b348015610502575f80fd5b5030610378565b348015610514575f80fd5b506102d9610523366004612aca565b610ca1565b348015610533575f80fd5b5061030e610542366004612a2c565b63ffffffff919091165f908152600160205260409020541490565b348015610568575f80fd5b506103787f000000000000000000000000000000000000000000000000000000000000000081565b34801561059b575f80fd5b506103b06105aa366004612afb565b610d43565b3480156105ba575f80fd5b5061044a6105c9366004612afb565b73ffffffffffffffffffffffffffffffffffffffff165f9081526005602052604090205490565b3480156105fb575f80fd5b506103b0610dc5565b34801561060f575f80fd5b5061062561061e366004612a2c565b5f92915050565b60405167ffffffffffffffff90911681526020016102e6565b348015610649575f80fd5b5061030e610658366004612b16565b610dd8565b348015610668575f80fd5b50600661049a565b34801561067b575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610378565b3480156106a4575f80fd5b506102d9610dfa565b3480156106b8575f80fd5b5061044a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106eb575f80fd5b505f61030e565b3480156106fd575f80fd5b5061030e61070c3660046127c1565b610e09565b34801561071c575f80fd5b506002546103789073ffffffffffffffffffffffffffffffffffffffff1681565b348015610748575f80fd5b506103b0610757366004612bba565b610e16565b348015610767575f80fd5b5061044a610776366004612bf9565b60016020525f908152604090205481565b348015610792575f80fd5b506102d96107a1366004612c12565b610e30565b6103b06107b4366004612bba565b610fea565b6107cc6107c7366004612c6f565b6111ae565b6040516102e6929190612cf6565b3480156107e5575f80fd5b506103b06107f4366004612afb565b6111e1565b6103b061080736600461293d565b611288565b348015610817575f80fd5b506103b0610826366004612afb565b6112d0565b348015610836575f80fd5b5061044a610845366004612d48565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260066020908152604080832093909416825291909152205490565b348015610887575f80fd5b506103b0610896366004612afb565b61134b565b3480156108a6575f80fd5b5061030e6108b5366004612d74565b6113ae565b6060600880546108c990612d8e565b80601f01602080910402602001604051908101604052809291908181526020018280546108f590612d8e565b80156109405780601f1061091757610100808354040283529160200191610940565b820191905f5260205f20905b81548152906001019060200180831161092357829003601f168201915b5050505050905090565b5f336109578185856113e2565b60019150505b92915050565b604080518082019091525f8082526020820152606061099360405180604001604052805f81526020015f81525090565b5f803073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a029190612dd9565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6e9190612df4565b604080518082018252848152602080820184905282515f80825291810190935290975091925090610ac1565b604080518082019091525f815260606020820152815260200190600190039081610a9a5790505b5093505f80610ae5604089013560608a0135610ae060208c018c612bf9565b6113f4565b60408051808201909152918252602082015296989597505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610b79576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610b9390610b8e908a612bf9565b611448565b14610bea57610ba56020880188612bf9565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610b70565b610bf98787878787878761149c565b50505050505050565b5f33610c0f85828561162d565b610c1a8585856116fa565b60019150505b9392505050565b610c2f6117a3565b610c3982826117f5565b5050565b604080518082019091525f80825260208201525f610c6b60408501356060860135610ae06020880188612bf9565b9150505f80610c7a8684611849565b9092509050610c97610c8f6020880188612bf9565b83838861199a565b9695505050505050565b600360209081525f928352604080842090915290825290208054610cc490612d8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf090612d8e565b8015610d3b5780601f10610d1257610100808354040283529160200191610d3b565b820191905f5260205f20905b815481529060010190602001808311610d1e57829003601f168201915b505050505081565b610d4b6117a3565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610dcd6117a3565b610dd65f611a85565b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b6060600980546108c990612d8e565b5f336109578185856116fa565b610e1e6117a3565b610c39610e2b8284612f18565b611af9565b63ffffffff84165f90815260036020908152604080832061ffff87168452909152812080546060929190610e6390612d8e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8f90612d8e565b8015610eda5780601f10610eb157610100808354040283529160200191610eda565b820191905f5260205f20905b815481529060010190602001808311610ebd57829003601f168201915b5050505050905080515f03610f285783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929450610df29350505050565b5f839003610f37579050610df2565b60028310610fb457610f7d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bfa92505050565b80610f8b8460028188613021565b604051602001610f9d93929190613048565b604051602081830303815290604052915050610df2565b83836040517f9a6d49cd000000000000000000000000000000000000000000000000000000008152600401610b709291906130b5565b5f5b818110156110ed5736838383818110611007576110076130c8565b905060200281019061101991906130f5565b905061104b61102b6020830183612bf9565b602083013563ffffffff919091165f908152600160205260409020541490565b61105557506110e5565b3063d045a0dc60c08301358360a0810135611074610100830183613131565b611085610100890160e08a01612afb565b6110936101208a018a613131565b6040518963ffffffff1660e01b81526004016110b597969594939291906131a7565b5f604051808303818588803b1580156110cc575f80fd5b505af11580156110de573d5f803e3d5ffd5b5050505050505b600101610fec565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa158015611136573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261117b919081019061323a565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401610b70919061278e565b6111b66126df565b604080518082019091525f80825260208201526111d4858585611c3f565b915091505b935093915050565b6111e96117a3565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e1906024015f604051808303815f87803b15801561126f575f80fd5b505af1158015611281573d5f803e3d5ffd5b5050505050565b3330146112c1576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bf987878787878787610bea565b6112d86117a3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610dba565b6113536117a3565b73ffffffffffffffffffffffffffffffffffffffff81166113a2576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610b70565b6113ab81611a85565b50565b5f6020820180359060019083906113c59086612bf9565b63ffffffff16815260208101919091526040015f20541492915050565b6113ef8383836001611d37565b505050565b5f806113ff85611e7c565b9150819050838110156111d9576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401610b70565b63ffffffff81165f908152600160205260408120548061095d576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610b70565b5f6114ad6114aa8787611eb2565b90565b90505f6114d8826114c66114c18a8a611ec9565b611eeb565b6114d360208d018d612bf9565b611f20565b905060288611156115be575f6115146114f760608c0160408d016132a3565b61150460208d018d612bf9565b8461150f8c8c611f54565b611f9e565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061158f9086908d905f9087906004016132be565b5f604051808303815f87803b1580156115a6575f80fd5b505af11580156115b8573d5f803e3d5ffd5b50505050505b73ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61160460208d018d612bf9565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600660209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116f457818110156116e6576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610b70565b6116f484848484035f611d37565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611749576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610b70565b73ffffffffffffffffffffffffffffffffffffffff8216611798576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610b70565b6113ef838383611fd0565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610dd6576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610b70565b63ffffffff82165f81815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060805f6118a4856020013561185e86612177565b61186b60a0890189613131565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121ea92505050565b90935090505f816118b65760016118b9565b60025b90506118d96118cb6020880188612bf9565b826107a160808a018a613131565b60045490935073ffffffffffffffffffffffffffffffffffffffff168015611990576040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063043a78eb9061194f90889088906004016132fc565b602060405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198e9190613320565b505b5050509250929050565b604080518082019091525f80825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a0016040528