@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 548 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DAI","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"TBTC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"USDC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"USDT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WBTC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"_WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"deployAndApprovePosm","inputs":[{"name":"poolManager","type":"address","internalType":"contract IPoolManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPermit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookModifyLiquidities","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookSavesDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"nativeCurrencyLabel","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nativeCurrencyLabelBytes","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"positionDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"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":"test_bytecodeSize_positionDescriptor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_bytecodeSize_proxy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_currencyRatioPriority_mainnet_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_currencyRatioPriority_notMainnet_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_flipRatio_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeCurrencyLabel_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_native_tokenURI_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_position_descriptor_initcodeHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setup_succeeds","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_tokenURI_revertsWithInvalidTokenId","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_tokenURI_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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},{"type":"error","name":"InvalidAddressLength","inputs":[{"name":"len","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a9042906103d9565b604555604b80546001600160a01b03191661050017905560405161013d906103cb565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b03929092166001600160a01b0319928316179055604e8054821661abcd17905560508054909116610f801790556040805180820190915260048152630ae8aa8960e31b60208201526101b3906102ac565b605480546001600160a01b03929092166001600160a01b0319928316179055605580548216736b175474e89094c44da98b954eedeac495271d0f17905560568054821673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905560578054821673dac17f958d2ee523a2206206994597c13d831ec7179055605880548216738daebade922df735c38c80c7ebd708af50815faa17905560598054909116732260fac5e5542a773aa44fbcfedf7c193bc2c59917905560408051808201909152600381526208aa8960eb1b6020820152605a906102909082610496565b506208aa8960eb1b605b553480156102a6575f80fd5b506105d7565b5f6102b6826102bd565b5092915050565b5f80826040516020016102d09190610550565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610339573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035d9190610566565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906103999085908790600401610593565b5f604051808303815f87803b1580156103b0575f80fd5b505af11580156103c2573d5f803e3d5ffd5b50505050915091565b61121e8062014f5a83390190565b808201808211156103f857634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061042657607f821691505b60208210810361044457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561049157805f5260205f20601f840160051c8101602085101561046f5750805b601f840160051c820191505b8181101561048e575f815560010161047b565b50505b505050565b81516001600160401b038111156104af576104af6103fe565b6104c3816104bd8454610412565b8461044a565b6020601f8211600181146104f5575f83156104de5750848201515b5f19600385901b1c1916600184901b17845561048e565b5f84815260208120601f198516915b828110156105245787850151825560209485019460019092019101610504565b508482101561054157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f920191825250919050565b5f60208284031215610576575f80fd5b81516001600160a01b038116811461058c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6201497480620005e65f395ff3fe6080604052600436106102e5575f3560e01c806393ad73ed11610186578063c0406226116100dc578063e0bab4c411610087578063f8ccbf4711610062578063f8ccbf471461084c578063f8ce27ef1461087d578063fa7626d414610891575f80fd5b8063e0bab4c4146107f8578063e20c9f7114610824578063ea502e5214610838575f80fd5b8063c9ec1872116100b7578063c9ec1872146107bc578063cb695390146107d0578063dd39f19c146107e4575f80fd5b8063c040622614610768578063c54e44eb1461077c578063c7b8e15d146107a8575f80fd5b8063b0464fdc1161013c578063b5d12c4e11610117578063b5d12c4e1461070f578063b7af3cdc14610723578063ba414fa614610744575f80fd5b8063b0464fdc1461067d578063b1a73b8a14610691578063b5508aa9146106fb575f80fd5b8063a12837ed1161016c578063a12837ed14610632578063a18246e214610646578063abbd42f114610669575f80fd5b806393ad73ed146105d95780639406840814610606575f80fd5b80634dede3de1161023b57806367382c05116101f157806385226c81116101cc57806385226c811461056b57806389a302711461058c578063916a17c6146105b8575f80fd5b806367382c051461052f57806372961883146105435780638173a5d614610557575f80fd5b806363e8f7281161022157806363e8f728146104ce5780636602ca0e146104fa57806366d9a9a01461050e575f80fd5b80634dede3de1461048e578063542524dd146104ba575f80fd5b8063307b90841161029b5780633f7286f4116102765780633f7286f41461043a5780634aa4a4fc1461044e5780634b4b6ca31461047a575f80fd5b8063307b9084146103bd57806339cd2013146103d15780633e5e3c2314610426575f80fd5b8063106d0231116102cb578063106d0231146103255780631ed7831c1461037b5780632ade38801461039c575f80fd5b806303ef31f6146102f05780630a9254e414610311575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061030f61030a366004617ade565b6108aa565b005b34801561031c575f80fd5b5061030f6108be565b348015610330575f80fd5b506047546103519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610386575f80fd5b5061038f610a4b565b6040516103729190617af9565b3480156103a7575f80fd5b506103b0610ab8565b6040516103729190617b9d565b3480156103c8575f80fd5b5061030f610c01565b3480156103dc575f80fd5b506023546024546025546103fe92600281810b936301000000909204900b9184565b60408051600295860b81529390940b6020840152928201526060810191909152608001610372565b348015610431575f80fd5b5061038f610fd7565b348015610445575f80fd5b5061038f611042565b348015610459575f80fd5b506054546103519073ffffffffffffffffffffffffffffffffffffffff1681565b348015610485575f80fd5b5061030f6110ad565b348015610499575f80fd5b506059546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c5575f80fd5b5061035161120f565b3480156104d9575f80fd5b50604d546103519073ffffffffffffffffffffffffffffffffffffffff1681565b348015610505575f80fd5b5061030f611231565b348015610519575f80fd5b506105226112fd565b6040516103729190617d0b565b34801561053a575f80fd5b5061030f611476565b34801561054e575f80fd5b5061030f61158a565b348015610562575f80fd5b5061030f61208a565b348015610576575f80fd5b5061057f61228d565b6040516103729190617da7565b348015610597575f80fd5b506056546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105c3575f80fd5b506105cc612358565b6040516103729190617e1c565b3480156105e4575f80fd5b506020546021546022546103fe92600281810b936301000000909204900b9184565b348015610611575f80fd5b506058546103519073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063d575f80fd5b5061030f61245b565b348015610651575f80fd5b5061065b605b5481565b604051908152602001610372565b348015610674575f80fd5b5061030f6124fc565b348015610688575f80fd5b506105cc6128e8565b34801561069c575f80fd5b506026546027546028546106c89260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff1690820152606001610372565b348015610706575f80fd5b5061057f6129eb565b34801561071a575f80fd5b5061030f612ab6565b34801561072e575f80fd5b50610737612f49565b6040516103729190617ebe565b34801561074f575f80fd5b50610758612fd5565b6040519015158152602001610372565b348015610773575f80fd5b506103516130a5565b348015610787575f80fd5b506057546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107b3575f80fd5b5061035161316b565b3480156107c7575f80fd5b5061035161317b565b3480156107db575f80fd5b5061030f613189565b3480156107ef575f80fd5b5061030f613311565b348015610803575f80fd5b506055546103519073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082f575f80fd5b5061038f6135de565b348015610843575f80fd5b5061030f613649565b348015610857575f80fd5b506043546107589074010000000000000000000000000000000000000000900460ff1681565b348015610888575f80fd5b5061030f613de6565b34801561089c575f80fd5b50601f546107589060ff1681565b6108b381614262565b6108bb614405565b50565b6108c6614449565b6108ce6144d4565b602a805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560298054949093169316831790915561093e91905f610bb86c0100000000000000000000000061454a565b508051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b54610a4991166108aa565b565b60606016805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382905f5260205f20018054610b5690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290617ed0565b8015610bcd5780601f10610ba457610100808354040283529160200191610bcd565b820191905f5260205f20905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b39565b505050508152505081526020019060010190610adb565b50505050905090565b603754770100000000000000000000000000000000000000000000009004600290810b905f90610c32908390617f4e565b905068056bc75e2d63100000805f610c6a6c01000000000000000000000000610c5a876146a6565b610c63876146a6565b86866149a3565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603854831660e085015290835289810b6020808501919091529089900b8385015260445484517f75794a3c00000000000000000000000000000000000000000000000000000000815294516fffffffffffffffffffffffffffffffff96909616965092945f9493909216926375794a3c92600480830193928290030181865afa158015610d78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9c9190617f6d565b9050610dd7828460015f5b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b50614ac4565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fed15e6cf00000000000000000000000000000000000000000000000000000000610e1d846001617fb1565b604051602401610e2f91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252610ebf91600401617ebe565b5f604051808303815f87803b158015610ed6575f80fd5b505af1158015610ee8573d5f803e3d5ffd5b505060495460445473ffffffffffffffffffffffffffffffffffffffff918216935063e9dc6375925016610f1d846001617fb1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015f60405180830381865afa158015610f88573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fcd91908101906180a0565b5050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b604954604080517fdc4c90d3000000000000000000000000000000000000000000000000000000008152905161115e9273ffffffffffffffffffffffffffffffffffffffff169163dc4c90d39160048083019260209291908290030181865afa15801561111c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114091906180d2565b602b5473ffffffffffffffffffffffffffffffffffffffff16614b62565b604954604080517feb6d3a110000000000000000000000000000000000000000000000000000000081529051610a499273ffffffffffffffffffffffffffffffffffffffff169163eb6d3a119160048083019260209291908290030181865afa1580156111cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f191906180d2565b60545473ffffffffffffffffffffffffffffffffffffffff16614b62565b61122e600173fffd8963efd1fc6a506488495d951d5263988d266180ed565b81565b604954604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152601360448201527f70726f78792062797465636f64652073697a6500000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a906084015b5f604051808303815f87803b1580156112e5575f80fd5b505af11580156112f7573d5f803e3d5ffd5b50505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f2090600202016040518060400160405290815f8201805461135090617ed0565b80601f016020809104026020016040519081016040528092919081815260200182805461137c90617ed0565b80156113c75780601f1061139e576101008083540402835291602001916113c7565b820191905f5260205f20905b8154815290600101906020018083116113aa57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561145e57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161140b5790505b50505050508152505081526020019060010190611320565b5f60405161148390617a85565b604051809103905ff08015801561149c573d5f803e3d5ffd5b50604b546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401611513929190618119565b5f604051808303815f87803b15801561152a575f80fd5b505af115801561153c573d5f803e3d5ffd5b5050604b54604a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b602a546115c0905f9073ffffffffffffffffffffffffffffffffffffffff1681610bb86c0100000000000000000000000061454a565b508051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931681029290921790819055608090940151603b805490931693169290921790559004600290810b905f906116d7908390617f4e565b90506116fd60405180606001604052806060815260200160608152602001606081525090565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801561176a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178e9190617f6d565b905068056bc75e2d63100000805f6117bf6c010000000000000000000000006117b6896146a6565b610c63896146a6565b604080516101008101825260395473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603b5490921660e084015282528a810b602083015289900b918101919091526fffffffffffffffffffffffffffffffff9190911691506118ba6c01000000000000000000000000828460015f6040519080825280601f01601f1916602001820160405280156118b4576020820181803683370190505b50614bfc565b604080518082018252601d8082527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020909201919091526049546044805493517fe9dc637500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481018a905292935f9392169163e9dc637591015f60405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119af91908101906180a0565b90505f8190505f8382516119c39190618147565b67ffffffffffffffff8111156119db576119db617f84565b6040519080825280601f01601f191660200182016040528015611a05576020820181803683370190505b5090505f5b8151811015611a815782611a1e8683617fb1565b81518110611a2e57611a2e61815a565b602001015160f81c60f81b828281518110611a4b57611a4b61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101611a0a565b505f611a8c82614caf565b6040517f6a82600a00000000000000000000000000000000000000000000000000000000815290915081905f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636a82600a90611ae3908590600401617ebe565b5f60405180830381865afa158015611afd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b429190810190618187565b905080806020019051810190611b5891906181cc565b604954603954603a546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152929f50611c149d50169a5063dee91a2c99506044019750611bd09650505050505050565b602060405180830381865afa158015611beb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0f91906182b5565b614e80565b603954605a80545f92611cc49273ffffffffffffffffffffffffffffffffffffffff90911691611c4390617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6f90617ed0565b8015611cba5780601f10611c9157610100808354040283529160200191611cba565b820191905f5260205f20905b815481529060010190602001808311611c9d57829003601f168201915b5050505050614ef6565b603a54605a80549293505f92611cf59273ffffffffffffffffffffffffffffffffffffffff169190611c4390617ed0565b603a549091505f90611d239074010000000000000000000000000000000000000000900462ffffff16614f7c565b603a546029549192505f91611d9b918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b602a54611d959073ffffffffffffffffffffffffffffffffffffffff1661528f565b5f6153bb565b603a546029549192505f91611deb918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b9050611e2287604001518486888686604051602001611e0e9594939291906182eb565b604051602081830303815290604052615579565b5050602b545f90611e489073ffffffffffffffffffffffffffffffffffffffff166155cb565b6039549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611e9257603954611e8d9073ffffffffffffffffffffffffffffffffffffffff166155cb565b611ec9565b6040518060400160405280600681526020017f4e617469766500000000000000000000000000000000000000000000000000008152505b603a549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611f1357603a54611f0e9073ffffffffffffffffffffffffffffffffffffffff166155cb565b611f4a565b6040518060400160405280600681526020017f4e617469766500000000000000000000000000000000000000000000000000008152505b90505f611f56886155ee565b603b549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611fbf57603b54611f9b9073ffffffffffffffffffffffffffffffffffffffff166155cb565b604051602001611fab91906183e2565b604051602081830303815290604052611ff6565b6040518060400160405280600781526020017f4e6f20486f6f6b000000000000000000000000000000000000000000000000008152505b905061207c8a5f0151888a888b888e60405160200161201a96959493929190618413565b60405160208183030381529060405286848a8760405160200161204094939291906185be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e0e9291602001618795565b505050505050505050505050565b6040517f8d1cc92500000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f506f736974696f6e44657363726970746f722e736f6c3a506f736974696f6e4460448201527f657363726970746f7200000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a908290638d1cc925906084015f60405180830381865afa15801561214b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121909190810190618187565b6040516020016121a091906187a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209091012060e084901b7fffffffff000000000000000000000000000000000000000000000000000000001683526004830191909152604a60448301527f706f736974696f6e2064657363726970746f7220696e6974636f64652068617360648301527f682028776974686f757420636f6e7374727563746f7220706172616d732c206160848301527f732075696e74323536290000000000000000000000000000000000000000000060a4830152602482015260c4016112ce565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f200180546122cd90617ed0565b80601f01602080910402602001604051908101604052809291908181526020018280546122f990617ed0565b80156123445780601f1061231b57610100808354040283529160200191612344565b820191905f5260205f20905b81548152906001019060200180831161232757829003601f168201915b5050505050815260200190600101906122b0565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561244357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123f05790505b5050505050815250508152602001906001019061237b565b604754604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152602060448201527f706f736974696f6e44657363726970746f722062797465636f64652073697a65606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a906084016112ce565b6049546054546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526125bd92919091169063166c5978906024015b602060405180830381865afa158015612573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125979190617f6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c615727565b6049546040517f166c59780000000000000000000000000000000000000000000000000000000081525f60048201526126159173ffffffffffffffffffffffffffffffffffffffff169063166c597890602401612558565b6049546056546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526126b692919091169063166c5978906024015b602060405180830381865afa15801561268c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b09190617f6d565b5f615727565b6049546057546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261271692919091169063166c597890602401612671565b6049546055546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261277692919091169063166c597890602401612671565b6049546058546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526127d692919091169063166c597890602401612671565b6049546059546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261283692919091169063166c597890602401612671565b60495460408051808201909152600581527f414c4943450000000000000000000000000000000000000000000000000000006020820152610a499173ffffffffffffffffffffffffffffffffffffffff169063166c5978906128979061577f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401612671565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156129d357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116129805790505b5050505050815250508152602001906001019061290b565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f20018054612a2b90617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5790617ed0565b8015612aa25780601f10612a7957610100808354040283529160200191612aa2565b820191905f5260205f20905b815481529060010190602001808311612a8557829003601f168201915b505050505081526020019060010190612a0e565b6040517f4049ddd200000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634049ddd2906024015f604051808303815f87803b158015612b19575f80fd5b505af1158015612b2b573d5f803e3d5ffd5b50506049546054546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612b8d94509116915063166c597890602401612558565b6049546040517f166c59780000000000000000000000000000000000000000000000000000000081525f6004820152612be59173ffffffffffffffffffffffffffffffffffffffff169063166c597890602401612558565b6049546056546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612c8792919091169063166c597890602401602060405180830381865afa158015612c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7f9190617f6d565b61012c615727565b6049546057546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612d2892919091169063166c597890602401602060405180830381865afa158015612cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d219190617f6d565b60c8615727565b6049546055546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612dc992919091169063166c597890602401602060405180830381865afa158015612d9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc29190617f6d565b6064615727565b6049546058546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612e8992919091169063166c597890602401602060405180830381865afa158015612e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e639190617f6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff38615727565b6049546059546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261283692919091169063166c597890602401602060405180830381865afa158015612eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f239190617f6d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4615727565b605a8054612f5690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054612f8290617ed0565b8015612fcd5780601f10612fa457610100808354040283529160200191612fcd565b820191905f5260205f20905b815481529060010190602001808311612fb057829003601f168201915b505050505081565b6008545f9060ff1615612fec575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561307a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309e9190617f6d565b1415905090565b5f80604051806123e001604052806123c08152602001620125286123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290613128906e22d473030f116ddee9f6b43ac78ba3908590600401618119565b5f604051808303815f87803b15801561313f575f80fd5b505af1158015613151573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b61122e6401000276a360016187b4565b5f6131846130a5565b905090565b5f60405161319690617a93565b604051809103905ff0801580156131af573d5f803e3d5ffd5b506050546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401613226929190618119565b5f604051808303815f87803b15801561323d575f80fd5b505af115801561324f573d5f803e3d5ffd5b5050605054604f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604480546046546040517f90107afe000000000000000000000000000000000000000000000000000000008152918516600483015290931660248401529093506390107afe9250015b5f604051808303815f87803b1580156132f8575f80fd5b505af115801561330a573d5f803e3d5ffd5b5050505050565b6040517f4049ddd200000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634049ddd2906024015f604051808303815f87803b158015613374575f80fd5b505af1158015613386573d5f803e3d5ffd5b50506049546056546054546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261343294509116915063dee91a2c90604401602060405180830381865afa158015613409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061342d91906182b5565b615790565b6049546055546056546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261349d92919091169063dee91a2c90604401611bd0565b6049546059546054546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261350892919091169063dee91a2c90604401611bd0565b6049546059546056546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261357392919091169063dee91a2c90604401611bd0565b6049546059546055546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152610a4992919091169063dee91a2c90604401611bd0565b60606015805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b603754770100000000000000000000000000000000000000000000009004600290810b905f9061367a908390617f4e565b90505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061370b9190617f6d565b905061373160405180606001604052806060815260200160608152602001606081525090565b68056bc75e2d63100000805f6137576c010000000000000000000000006117b6896146a6565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c085015260385490921660e084015282528a810b602083015289900b918101919091526fffffffffffffffffffffffffffffffff919091169150613819818360015f610da7565b604080518082018252601d8082527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020909201919091526049546044805493517fe9dc637500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481018b905292935f9392169163e9dc637591015f60405180830381865afa1580156138c9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261390e91908101906180a0565b90505f8190505f8382516139229190618147565b67ffffffffffffffff81111561393a5761393a617f84565b6040519080825280601f01601f191660200182016040528015613964576020820181803683370190505b5090505f5b81518110156139e0578261397d8683617fb1565b8151811061398d5761398d61815a565b602001015160f81c60f81b8282815181106139aa576139aa61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101613969565b505f6139eb82614caf565b6040517f6a82600a00000000000000000000000000000000000000000000000000000000815290915081905f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636a82600a90613a42908590600401617ebe565b5f60405180830381865afa158015613a5c573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613aa19190810190618187565b905080806020019051810190613ab791906181cc565b6049546036546037546040517fdee91a2c000000000000000000000000000000000000000000000000000000008152939f50613b2b9e5073ffffffffffffffffffffffffffffffffffffffff9283169d5063dee91a2c9c50611bd09b509082169950169650600401945061828e9350505050565b602954605a80545f92613b5a9273ffffffffffffffffffffffffffffffffffffffff90911691611c4390617ed0565b602a54605a80549293505f92613b8b9273ffffffffffffffffffffffffffffffffffffffff169190611c4390617ed0565b6037549091505f90613bb99074010000000000000000000000000000000000000000900462ffffff16614f7c565b6037546029549192505f91613c09918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b6037546029549192505f91613c59918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b9050613c7c86604001518486888686604051602001611e0e9594939291906182eb565b5050602b545f90613ca29073ffffffffffffffffffffffffffffffffffffffff166155cb565b6029549091505f90613cc99073ffffffffffffffffffffffffffffffffffffffff166155cb565b602a549091505f90613cf09073ffffffffffffffffffffffffffffffffffffffff166155cb565b90505f613cfc896155ee565b6038549091505f9073ffffffffffffffffffffffffffffffffffffffff1615613d6557603854613d419073ffffffffffffffffffffffffffffffffffffffff166155cb565b604051602001613d5191906183e2565b604051602081830303815290604052613d9c565b6040518060400160405280600781526020017f4e6f20486f6f6b000000000000000000000000000000000000000000000000008152505b905061207c895f0151888a888b88604051602001613dbe9594939291906187e0565b6040516020818303038152906040528a87858b886040516020016120409594939291906188d6565b604954604080517fb7af3cdc0000000000000000000000000000000000000000000000000000000081529051613f279273ffffffffffffffffffffffffffffffffffffffff169163b7af3cdc916004808301925f9291908290030181865afa158015613e54573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e9991908101906180a0565b605a8054613ea690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054613ed290617ed0565b8015613f1d5780601f10613ef457610100808354040283529160200191613f1d565b820191905f5260205f20905b815481529060010190602001808311613f0057829003601f168201915b5050505050615579565b602b545f90613f6c9073ffffffffffffffffffffffffffffffffffffffff167f504f4c00000000000000000000000000000000000000000000000000000000006157e2565b90506140398173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015613fb9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613ffe91908101906180a0565b6040518060400160405280600381526020017f504f4c0000000000000000000000000000000000000000000000000000000000815250615579565b602b545f9061407e9073ffffffffffffffffffffffffffffffffffffffff167f424e4200000000000000000000000000000000000000000000000000000000006157e2565b905061414b8173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156140cb573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261411091908101906180a0565b6040518060400160405280600381526020017f424e420000000000000000000000000000000000000000000000000000000000815250615579565b602b545f906141909073ffffffffffffffffffffffffffffffffffffffff167f41564158000000000000000000000000000000000000000000000000000000006157e2565b905061425d8173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156141dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261422291908101906180a0565b6040518060400160405280600481526020017f4156415800000000000000000000000000000000000000000000000000000000815250615579565b505050565b61426a61317b565b604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556142b7615900565b604d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055614326817f45544800000000000000000000000000000000000000000000000000000000006157e2565b604980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604654604d5460408051808201909152600181527f030000000000000000000000000000000000000000000000000000000000000060208201526143bd94869493811693620186a09390929116906159e6565b604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6029546144279073ffffffffffffffffffffffffffffffffffffffff16615b96565b602a54610a499073ffffffffffffffffffffffffffffffffffffffff16615b96565b3060405161445690617aa1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561448c573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673fffffffffffffffffffffffff