UNPKG

@settlemint/solidity-diamond-bond

Version:

Smart contract set to build an enterprise bond usecase in SettleMint

1 lines 538 kB
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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":"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":"testAddressOfSelector","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBuyingAfterCampaignEnds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCancelCampaign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testClaimAndWithdrawCoupon","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDiamaondReceivesEth","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEditBondParameters","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEditBondParametersWhenBondIsIssued","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFacetLoupeSupportsInterface","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testFallback","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFallbackFunction","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetCouponDates","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testGetCouponRates","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testInitializeCampaigns","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIssueBonds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLoupeFacetAddresses","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLoupeFacets","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testLoupeSselectors","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPauseUnpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRemoveFacet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveAndRescind","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveBonds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveBondsBeforeOrAfterCampaign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveMoreThanMax","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReserveWhenNotAvailable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTerminateBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdrawBonds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdrawCouponBeforeAllClaimsReceived","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BondTerminated","inputs":[{"name":"bondId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Cancelled","inputs":[{"name":"bondId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"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":"0x60808060405234603157600160ff19600c541617600c55600160ff19601f541617601f55620169649081620000368239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302e962b714618851575080630a9254e4146177185780630d739422146175cb5780631b4d0cb0146174d15780631ed7831c1461745357806326616e521461686d57806326e113e2146165395780632ade3880146163455780633e5e3c23146162c75780633f7286f41461624957806347ba77101461620957806356e3d00214615ffa578063583b0ad514615de05780635a7d9aaa14615b6a5780635abe5ded14615aa757806366d9a9a01461596a5780637e6e915f1461580a57806385226c81146157805780638a46bf6d146156b2578063916a17c614615608578063962482b014614b0857806397eb4d8b1461467c5780639df78cd814613ddb578063a95409b314613960578063ad1565ec14613892578063ae4073961461340b578063b0464fdc14613361578063b5508aa9146132d7578063ba414fa6146132b2578063c62a4f591461306c578063d60fa40014612b44578063d906bdf714611132578063d937818414610f7f578063dec02a0514610d58578063e20c9f7114610cca578063eb109a13146109ac578063ec2a0b04146107a4578063f2267ce4146105d7578063f2acf6f014610405578063f88ed61f146102065763fa7626d4146101e1575f80fd5b34610203578060031936011261020357602060ff601f54166040519015158152f35b80fd5b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103f0575b5060206102b46001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b83526004830161909d565b03925af1801561039a576103bd575b50806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103a8575b506001600160a01b0360295416803b156103a5578180916044604051809481937ff844a31c000000000000000000000000000000000000000000000000000000008352600160048401528160248401525af1801561039a576103895750f35b8161039391618c31565b6102035780f35b6040513d84823e3d90fd5b50fd5b816103b291618c31565b61020357805f61032a565b6020813d6020116103e8575b816103d660209383618c31565b810103126103e457516102c3565b5f80fd5b3d91506103c9565b816103fa91618c31565b61020357805f61027a565b5034610203578060031936011261020357806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576105c2575b506001600160a01b0360295416803b156103a5578180916024604051809481937fde99347a000000000000000000000000000000000000000000000000000000008352600160048401525af1801561039a576105ad575b506001600160a01b0360295416803b156103a5578180916024604051809481937f43a19a65000000000000000000000000000000000000000000000000000000008352600160048401525af1801561039a57610598575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103895750f35b816105a291618c31565b61020357805f61052a565b816105b791618c31565b61020357805f6104d3565b816105cc91618c31565b61020357805f61047c565b5034610203578060031936011261020357806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761078f575b50506001600160a01b0360235416604051907f4b503f0b0000000000000000000000000000000000000000000000000000000082528282600481845afa91821561076057839261076b575b5060207fffffffff000000000000000000000000000000000000000000000000000000006106d26001600160a01b036029541694618d9a565b51166024604051809581937fcdffacc600000000000000000000000000000000000000000000000000000000835260048301525afa8015610760578390610721575b61071e9250619509565b80f35b506020823d602011610758575b8161073b60209383618c31565b810103126107545761074f61071e92618c54565b610714565b8280fd5b3d915061072e565b6040513d85823e3d90fd5b6107889192503d8085833e6107808183618c31565b810190618d07565b905f610699565b8161079991618c31565b61020357805f61064e565b50346102035780600319360112610203576001600160a01b03602354166040517f4b503f0b0000000000000000000000000000000000000000000000000000000081528281600481855afa908115610760578391610992575b506040519161080b83618c15565b825260208201526004826001600160a01b0360295416604051928380927f7a0ed6270000000000000000000000000000000000000000000000000000000082525afa90811561076057839161087d575b506001600160a01b036108748161071e94511692618d30565b51511690619509565b90503d8084833e61088e8183618c31565b81019060208183031261098a5780519067ffffffffffffffff821161098e570181601f8201121561098a578051906108c582618c68565b926108d36040519485618c31565b82845260208085019360051b830101918183116109865760208101935b83851061090b57506001600160a01b03935061085b92505050565b845167ffffffffffffffff8111610982578201906040601f198386030112610982576040519061093a82618c15565b61094660208401618c54565b825260408301519167ffffffffffffffff831161097e5761096f86602080969581960101618c80565b838201528152019401936108f0565b8a80fd5b8880fd5b8680fd5b8380fd5b8480fd5b6109a691503d8085833e6107808183618c31565b5f6107fd565b5034610203578060031936011261020357806001600160a01b0360205416604051906109d782618bf8565b600282526103e86020830152620186a060408301528260608301528260808301526103e860a0830152600560c0830152606460e0830152600a610100830152606461012083015282610140830152826101608301526018610180830152826101a0830152826101c08301526113886101e08301528261020083015282610220830152826102408301526102608201526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829061028490829084905af1801561039a57610cb1575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f491cc7c2000000000000000000000000000000000000000000000000000000008152818180610bf160048201906001606060808401938281528260208201528260408201520152565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57610c9c575b50507fc41d93b8bfbf9fd7cf5bfe271fd649ab6a6fec0ea101c23b82a2a28eca2533a9602060405160028152a1806001600160a01b0360295416803b156103a5578180916024604051809481937f40e58ee5000000000000000000000000000000000000000000000000000000008352600260048401525af1801561039a576103895750f35b81610ca691618c31565b61020357805f610c16565b81610cbb91618c31565b61020357805f610b86565b5050fd5b503461020357806003193601126102035760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610d3957610d3585610d2981870382618c31565b60405191829182618a0c565b0390f35b82546001600160a01b0316845260209093019260019283019201610d12565b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57610f6a575b506020610e066001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b83526004830161909d565b03925af1801561039a57610f3b575b50806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57610f26575b506001600160a01b03602954166001600160a01b036021541690803b15610cc6578291829160405180948180947f25830db300000000000000000000000000000000000000000000000000000000825260606004830152610f0860648301604090600e81527f626f6e645075726368617365496400000000000000000000000000000000000060208201520190565b9060016024840152604483015203925af1801561039a576103895750f35b81610f3091618c31565b61020357805f610e79565b6020813d602011610f62575b81610f5460209383618c31565b810103126103e45751610e15565b3d9150610f47565b81610f7491618c31565b61020357805f610dcc565b503461020357806003193601126102035760405190610f9d82618c15565b6107b282526107b3602083015260405191610fb783618c15565b600183526001602084015260405192610fcf84618c15565b60018452600160208501526024836001600160a01b0360295416604051928380927fa8314de7000000000000000000000000000000000000000000000000000000008252600160048301525afa92831561112757849385928691611096575b50855b8151811015611092578061105c61104a60019385618dca565b5161105583876194f8565b51906195a0565b6110746110698287618dca565b5161105583896194f8565b61108c6110818289618dca565b51611055838c6194f8565b01611031565b8680f35b94505090503d8085853e6110aa8185618c31565b83019060608483031261098e57835167ffffffffffffffff811161112357826110d4918601618f16565b91602085015167ffffffffffffffff811161098657816110f5918701618f16565b9460408101519067ffffffffffffffff821161111f57611116929101618f16565b9193915f61102e565b8780fd5b8580fd5b6040513d86823e3d90fd5b5034610203578060031936011261020357806001600160a01b03602054166040519061115d82618bf8565b600282526103e86020830152620186a060408301528260608301528260808301526103e860a0830152600660c0830152606460e0830152600a610100830152606461012083015261014082018381526101608301848152610180840191601883526101a08501908682526101c086019087825260056101e088015261020087019360028552886102208901526102408801968988526102608901526001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612ad757604051906303223eab60e11b82526004820152898160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115612acc578a91612b2f575b50506001600160a01b0360295416803b15612ad757604080516360332e8960e01b81528a51600482015260208b01516024820152908a0151604482015260608a0151606482015260808a0151608482015260a08a015160a482015260c08a015160c482015260e08a015160e48201526101008a01516101048201526101208a01516101248201526101408a01516101448201526101608a01516101648201526101808a01516101848201526101a08a01516101a48201526101c08a01516101c48201526101e08a01516101e48201526102008a01516102048201526102208a01516102248201526102408a01516102448201526102608a01516001600160a01b0316610264820152908a90829061028490829084905af1908115612acc578a91612b1a575b50506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612ad757604051906303223eab60e11b82526004820152898160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115612acc578a91612b05575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561098257604051633d21120560e21b8152898160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115612acc578a91612af0575b50506001600160a01b0360295416803b15612ad757604080516360332e8960e01b81528a51600482015260208b01516024820152908a0151604482015260608a0151606482015260808a0151608482015260a08a015160a482015260c08a015160c482015260e08a015160e48201526101008a01516101048201526101208a01516101248201526101408a01516101448201526101608a01516101648201526101808a01516101848201526101a08a01516101a48201526101c08a01516101c48201526101e08a01516101e48201526102008a01516102048201526102208a01516102248201526102408a01516102448201526102608a01516001600160a01b0316610264820152908a90829061028490829084905af1908115612acc578a91612adb575b505060038852600185526001600160a01b0360295416803b15612ad757604080516360332e8960e01b81528a51600482015260208b01516024820152908a0151604482015260608a0151606482015260808a0151608482015260a08a015160a482015260c08a015160c482015260e08a015160e48201526101008a01516101048201526101208a01516101248201526101408a01516101448201526101608a01516101648201526101808a01516101848201526101a08a01516101a48201526101c08a01516101c48201526101e08a01516101e48201526102008a01516102048201526102208a01516102248201526102408a01516102448201526102608a01516001600160a01b0316610264820152908a90829061028490829084905af1908115612acc578a91612ab7575b5050600a60649260048a52600287525252600285526001600160a01b0360295416803b1561111f57604080516360332e8960e01b81528851600482015260208901516024820152908801516044820152606088015160648201526080880151608482015260a088015160a482015260c088015160c482015260e088015160e48201526101008801516101048201526101208801516101248201526101408801516101448201526101608801516101648201526101808801516101848201526101a08801516101a48201526101c08801516101c48201526101e08801516101e48201526102008801516102048201526102208801516102248201526102408801516102448201526102608801516001600160a01b0316610264820152908890829061028490829084905af1908115612a82578891612aa2575b5050600586526002835260028152600485526001600160a01b0360295416803b1561111f57604080516360332e8960e01b81528851600482015260208901516024820152908801516044820152606088015160648201526080880151608482015260a088015160a482015260c088015160c482015260e088015160e48201526101008801516101048201526101208801516101248201526101408801516101448201526101608801516101648201526101808801516101848201526101a08801516101a48201526101c08801516101c48201526101e08801516101e48201526102008801516102048201526102208801516102248201526102408801516102448201526102608801516001600160a01b0316610264820152908890829061028490829084905af1908115612a82578891612a8d575b5050600686526001835260038152600485526001600160a01b0360295416803b1561111f57604080516360332e8960e01b81528851600482015260208901516024820152908801516044820152606088015160648201526080880151608482015260a088015160a482015260c088015160c482015260e088015160e48201526101008801516101048201526101208801516101248201526101408801516101448201526101608801516101648201526101808801516101848201526101a08801516101a48201526101c08801516101c48201526101e08801516101e48201526102008801516102048201526102208801516102248201526102408801516102448201526102608801516001600160a01b0316610264820152908890829061028490829084905af1908115612a82578891612a6d575b5050600c906007875287845252600484526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a58575b50506008855260028252600281526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a43575b50506009855260018252600381526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a2e575b5050600a855285825260038452600c81526001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf578791612a19575b5050600b8552600182526003845260028152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561112357604051633d21120560e21b8152868160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156129cf578791612a04575b50506001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf5787916129ef575b5050600c855285825260038452600b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561112357604051633d21120560e21b8152868160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156129cf5787916129da575b50506001600160a01b0360295416803b1561098657604080516360332e8960e01b81528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a482015260c087015160c482015260e087015160e48201526101008701516101048201526101208701516101248201526101408701516101448201526101608701516101648201526101808701516101848201526101a08701516101a48201526101c08701516101c48201526101e08701516101e48201526102008701516102048201526102208701516102248201526102408701516102448201526102608701516001600160a01b0316610264820152908790829061028490829084905af19081156129cf5787916129ba575b5090600d865281835281855252600b8252737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561098e57604051633d21120560e21b8152858160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af19081156129465786916129a5575b50506001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612990575b5050600e845260018152848352600b8252737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561098e57604051633d21120560e21b8152858160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561294657869161297b575b50506001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612966575b5050600f845284815260018352601882526001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612951575b5050601084526001815260018352601882526001600160a01b0360295416803b1561112357604080516360332e8960e01b81528651600482015260208701516024820152908601516044820152606086015160648201526080860151608482015260a086015160a482015260c086015160c482015260e086015160e48201526101008601516101048201526101208601516101248201526101408601516101448201526101608601516101648201526101808601516101848201526101a08601516101a48201526101c08601516101c48201526101e08601516101e48201526102008601516102048201526102208601516102248201526102408601516102448201526102608601516001600160a01b0316610264820152908690829061028490829084905af1908115612946578691612931575b50506018926002600192601187525252526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829081838161028481015b03925af1801561039a57610598575050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576103895750f35b8161293b91618c31565b61098e57845f612790565b6040513d88823e3d90fd5b8161295b91618c31565b61098e57845f61265b565b8161297091618c31565b61098e57845f612527565b8161298591618c31565b61098e57845f612402565b8161299a91618c31565b61098e57845f61239e565b816129af91618c31565b61098e57845f612279565b816129c491618c31565b61112357855f612215565b6040513d89823e3d90fd5b816129e491618c31565b61112357855f6120f0565b816129f991618c31565b61112357855f61208c565b81612a0e91618c31565b61112357855f611f67565b81612a2391618c31565b61112357855f611f02565b81612a3891618c31565b61112357855f611dce565b81612a4d91618c31565b61112357855f611c9d565b81612a6291618c31565b61112357855f611b6c565b81612a7791618c31565b61098657865f611a38565b6040513d8a823e3d90fd5b81612a9791618c31565b61098657865f611903565b81612aac91618c31565b61098657865f6117ce565b81612ac191618c31565b61098257885f611696565b6040513d8c823e3d90fd5b8980fd5b81612ae591618c31565b61098257885f611569565b81612afa91618c31565b61098257885f611444565b81612b0f91618c31565b61098257885f6113ef565b81612b2491618c31565b61098257885f611385565b81612b3991618c31565b61098257885f611260565b5034610203578060031936011261020357806001600160a01b036020541660405190612b6f82618bf8565b600282526103e86020830152620186a06040830152600260608301528260808301526103e860a0830152600560c0830152606460e0830152600a610100830152606461012083015282610140830152826101608301526018610180830152826101a0830152826101c083015260056101e08301528261020083015282610220830152826102408301526102608201526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829061028490829084905af1801561039a57613057575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613042575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761302d575b50602954602154604051634835898d60e11b815260806004820152600e60848201527f626f6e645075726368617365496400000000000000000000000000000000000060a482015260026024820152600160448201526001600160a01b03918216606482015292602092849260c49284929091165af1801561039a57612ffe575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517fe5d6bf02000000000000000000000000000000000000000000000000000000008152660e35fa931a00006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57612fe9575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57612fd4575b50602954602154604051634835898d60e11b815260806004820152600e60848201527f626f6e645075726368617365496400000000000000000000000000000000000060a482015260026024820152600160448201526001600160a01b039182166064820152926020928492169082908160c481015b03925af1801561039a57612fa8575080f35b612fc99060203d602011612fcd575b612fc18183618c31565b810190618f8b565b5080f35b503d612fb7565b81612fde91618c31565b61020357805f612f20565b81612ff391618c31565b61020357805f612ecd565b6020813d602011613025575b8161301760209383618c31565b810103126103e45751612e55565b3d915061300a565b8161303791618c31565b61020357805f612dd4565b8161304c91618c31565b61020357805f612d81565b8161306191618c31565b61020357805f612d1e565b5034610203578060031936011261020357806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761329d575b506001600160a01b03602954166024826001600160a01b036023541692604051928380927fadfca15e0000000000000000000000000000000000000000000000000000000082528660048301525afa9081156107605760049284918293613281575b50604051938480927f4b503f0b0000000000000000000000000000000000000000000000000000000082525afa918215610760578392613239575b506131b77fffffffff000000000000000000000000000000000000000000000000000000006131af8193618d30565b511692618d30565b51168082036131c4575050f35b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cc657604051917f7c84c69b000000000000000000000000000000000000000000000000000000008352600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561039a576103895750f35b7fffffffff00000000000000000000000000000000000000000000000000000000809293506131af6132776131b7933d8089833e6107808183618c31565b9493505050613180565b6132969193503d8084833e6107808183618c31565b915f613145565b816132a791618c31565b61020357805f6130e3565b503461020357806003193601126102035760206132cd61941f565b6040519015158152f35b50346102035780600319360112610203576019546132f481618c68565b916133026040519384618c31565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106133445760405180610d358782618ac8565b60016020819261335385618f9a565b81520192019201919061332f565b5034610203578060031936011261020357601c5461337e81618c68565b9161338c6040519384618c31565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106133ce5760405180610d358782618b45565b600260206001926040516133e181618c15565b6001600160a01b0386541681526133f98587016190f5565b838201528152019201920191906133b9565b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761387d575b5060206134b96001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b83526004830161909d565b03925af1801561039a5761384e575b50806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613839575b506001600160a01b0360295416803b156103a5578180916044604051809481937ff844a31c000000000000000000000000000000000000000000000000000000008352600160048401528160248401525af1801561039a57613824575b506001600160a01b03602b54166001600160a01b0360215416813b15610cc65782916044839260405194859384927f40c10f190000000000000000000000000000000000000000000000000000000084526004840152683635c9adc5dea0000060248401525af1801561039a5761380f575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576137fa575b5060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a576137cd575b50806001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576137b8575b506001600160a01b03602954166001600160a01b036021541690803b15610cc6578291829160405180948180947fe3adc7ee00000000000000000000000000000000000000000000000000000000825260606004830152610f0860648301604090600e81527f626f6e645075726368617365496400000000000000000000000000000000000060208201520190565b816137c291618c31565b61020357805f613729565b6137ee9060203d6020116137f3575b6137e68183618c31565b810190618f73565b6136c2565b503d6137dc565b8161380491618c31565b61020357805f613661565b8161381991618c31565b61020357805f6135fe565b8161382e91618c31565b61020357805f61358c565b8161384391618c31565b61020357805f61352f565b6020813d602011613875575b8161386760209383618c31565b810103126103e457516134c8565b3d915061385a565b8161388791618c31565b61020357805f61347f565b503461020357806003193601126102035761071e81806001600160a01b03602954166040518260208201917f15667403000000000000000000000000000000000000000000000000000000008352600481526138ef602482618c31565b51925af16138fb619399565b506040519061390b606083618c31565b603982527f46616c6c6261636b2066756e6374696f6e2073686f756c64207265766572742060208301527f666f72206e6f6e2d6578697374656e742066756e6374696f6e00000000000000604083015261963a565b50346102035780600319360112610203576040805191906139818184618c31565b60018352601f1901815b818110613d84578280856004826001600160a01b0360235416604051928380927f4b503f0b0000000000000000000000000000000000000000000000000000000082525afa908115610760578391613d6a575b50604051906139ec82618bdc565b838252600260208301526040820152613a0482618d30565b52613a0e81618d30565b506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cc6576040519063ca669fa760e01b82526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610760578391613d55575b50506001600160a01b0360295416803b15610cc657613ad183916020938360405195869485937f1f931c1c000000000000000000000000000000000000000000000000000000008552606060048601526064850190618dde565b8260248501528284820391600319830160448701525201925af1801561039a57613d40575b506004816001600160a01b0360295416604051928380927f52ef6b2c0000000000000000000000000000000000000000000000000000000082525afa90811561039a578291613d1e575b505160068103613c94575b506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613c7f575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57613c6a575b50506001600160a01b036029541660206001600160a01b03601f5460081c166044604051809481937efdd58e0000000000000000000000000000000000000000000000000000000083526004830152600160248301525afa801561039a57612fa8575080f35b81613c7491618c31565b610203578082613c04565b81613c8991618c31565b610203578082613bb1565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152600660248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561039a5715613b4b5781613d1391618c31565b610203578082613b4b565b613d3a91503d8084833e613d328183618c31565b810190618e94565b83613b40565b81613d4a91618c31565b610203578082613af6565b81613d5f91618c31565b6103a5578184613a77565b613d7e91503d8085833e6107808183618c31565b846139de565b602090604051613d9381618bdc565b8481528483820152606060408201528282870101520161398b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614667575b506020613e896001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b8352600483016193d8565b03925af1801561039a57614638575b508060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a5761461b575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614606575b506001600160a01b03601f5460081c16737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576145f1575b506001600160a01b0360295416803b156103a5578180916044604051809481937ff844a31c000000000000000000000000000000000000000000000000000000008352600160048401528160248401525af1801561039a576145dc575b506001600160a01b03602b54166001600160a01b0360215416813b15610cc65782916044839260405194859384927f40c10f19000000000000000000000000000000000000000000000000000000008452600484015269021e19e0c9bab240000060248401525af1801561039a576145c7575b506001600160a01b03602b54166001600160a01b0360205416813b15610cc65782916044839260405194859384927f40c10f19000000000000000000000000000000000000000000000000000000008452600484015269021e19e0c9bab240000060248401525af1801561039a576145b2575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761459d575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614588575b506001600160a01b03602954166001600160a01b036021541690803b15610cc6578291829160405180948180947fe3adc7ee0000000000000000000000000000000000000000000000000000000082526060600483015261426c60648301604090600381527f627031000000000000000000000000000000000000000000000000000000000060208201520190565b9060016024840152604483015203925af1801561039a57614573575b5060206001600160a01b036029541660446001600160a01b036021541660405194859384927ff97656340000000000000000000000000000000000000000000000000000000084526001600485015260248401525af1801561039a57614544575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761452f575b506001600160a01b0360205416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761451a575b5060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a576144fd575b50806001600160a01b0360205416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a5576040519063ca669fa760e01b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576144e8575b506001600160a01b03602954166001600160a01b0360215416813b15610cc65782916044839260405194859384927f22e29d590000000000000000000000000000000000000000000000000000000084526001600485015260248401525af1801561039a576103895750f35b816144f291618c31565b61020357805f61447c565b6145159060203d6020116137f3576137e68183618c31565b614418565b8161452491618c31565b61020357805f6143b7565b8161453991618c31565b61020357805f614354565b6020813d60201161456b575b8161455d60209383618c31565b810103126103e457516142e9565b3d9150614550565b8161457d91618c31565b61020357805f614288565b8161459291618c31565b61020357805f6141dd565b816145a791618c31565b61020357805f61417a565b816145bc91618c31565b61020357805f61410e565b816145d191618c31565b61020357805f61409b565b816145e691618c31565b61020357805f614028565b816145fb91618c31565b61020357805f613fcb565b8161461091618c31565b61020357805f613f65565b6146339060203d6020116137f3576137e68183618c31565b613efa565b6020813d60201161465f575b8161465160209383618c31565b810103126103e45751613e98565b3d9150614644565b8161467191618c31565b61020357805f613e4f565b5034610203578060031936011261020357806001600160a01b0360205416604051906146a782618bf8565b600282526103e86020830152620186a060408301528260608301528260808301526103e860a0830152600560c0830152606460e0830152600a610100830152606461012083015282610140830152826101608301526018610180830152826101a0830152826101c083015260646101e08301528261020083015282610220830152826102408301526102608201526001600160a01b0360295416803b15610cc657604080516360332e8960e01b81528351600482015260208401516024820152908301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c482015260e083015160e48201526101008301516101048201526101208301516101248201526101408301516101448201526101608301516101648201526101808301516101848201526101a08301516101a48201526101c08301516101c48201526101e08301516101e4820152610200830151610204820152610220830151610224820152610240830151610244820152610260909201516001600160a01b03166102648301528290829061028490829084905af1801561039a57614af3575b506001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614ade575b5060206001600160a01b03602954166001600160a01b0360215416906040518094818094634835898d60e11b82526080600483015261492560848301604090600e81527f626f6e645075726368617365496400000000000000000000000000000000000060208201520190565b906002602484015260646044840152606483015203925af1801561039a57614aaf575b50806001600160a01b0360225416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614a9a575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156102035780604051633d21120560e21b8152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57614a85575b5060206001600160a01b036029541660c46001600160a01b03602254166040519485938492634835898d60e11b845260806004850152600f60848501527f626f6e645075726368617365496432000000000000000000000000000000000060a4850152600260248501526064604485015260648401525af1801561039a57612fa8575080f35b81614a8f91618c31565b61020357805f6149ff565b81614aa491618c31565b61020357805f6149ac565b6020813d602011614ad6575b81614ac860209383618c31565b810103126103e45751614948565b3d9150614abb565b81614ae891618c31565b61020357805f6148b8565b81614afd91618c31565b61020357805f614855565b5034610203578060031936011261020357806001600160a01b0360215416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a576155f3575b506020614bb66001600160a01b03602954166001600160a01b0360215416604051948580948193634835898d60e11b8352600483016193d8565b03925af1801561039a576155c4575b508060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401525f1960248401525af1801561039a576155a7575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561020357806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a57615592575b506001600160a01b0360225416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156103a557604051906303223eab60e11b82526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561039a5761557d575b5060206001600160a01b03602954166001600160a01b0360225416906040518094818094634835898d60e11b825260806004830152614d6260848301604090600381527f627032000000000000000000000000000000000000000000000000000000000060208201520190565b906001602484015260016044840152606483015203925af1801561039a5761554e575b508060206001600160a01b03602b541660446001600160a01b036029541660405194859384927f095ea7b3000000000000000000000000000000000000000000000000000000008