[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "OnlyFactoryAllowed", "type": "error" }, { "inputs": [], "name": "OnlyPoolAllowed", "type": "error" }, { "inputs": [], "name": "OnlySelfCallAllowed", "type": "error" }, { "inputs": [], "name": "ZeroManagerAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "burnAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountXOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountYOut", "type": "uint256" } ], "name": "Burned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "feesEarned0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "feesEarned1", "type": "uint256" } ], "name": "FeesEarned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "managingFee", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "performanceFee", "type": "uint16" } ], "name": "FeesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "inThePosition", "type": "bool" } ], "name": "InThePositionStatusSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "liquidityMinted", "type": "uint256" }, { "indexed": false, "internalType": "int24", "name": "tickLower", "type": "int24" }, { "indexed": false, "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "indexed": false, "internalType": "uint256", "name": "amountXIn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountYIn", "type": "uint256" } ], "name": "LiquidityAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "liquidityRemoved", "type": "uint256" }, { "indexed": false, "internalType": "int24", "name": "tickLower", "type": "int24" }, { "indexed": false, "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "indexed": false, "internalType": "uint256", "name": "amountXOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountYOut", "type": "uint256" } ], "name": "LiquidityRemoved", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MintStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountXIn", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountYIn", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousManager", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newManager", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int24", "name": "lowerTick", "type": "int24" }, { "indexed": false, "internalType": "int24", "name": "upperTick", "type": "int24" } ], "name": "PointsSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "zeroForOne", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "name": "Swapped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [ { "internalType": "int24", "name": "newLeftPoint", "type": "int24" }, { "internalType": "int24", "name": "newRightPoint", "type": "int24" }, { "internalType": "uint128", "name": "amountX", "type": "uint128" }, { "internalType": "uint128", "name": "amountY", "type": "uint128" }, { "internalType": "uint256[2]", "name": "maxAmounts", "type": "uint256[2]" } ], "name": "addLiquidity", "outputs": [ { "internalType": "uint256", "name": "remainingAmountX", "type": "uint256" }, { "internalType": "uint256", "name": "remainingAmountY", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "burnAmount", "type": "uint256" }, { "internalType": "uint256[2]", "name": "minAmounts", "type": "uint256[2]" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collectManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentFees", "outputs": [ { "internalType": "uint256", "name": "fee0", "type": "uint256" }, { "internalType": "uint256", "name": "fee1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint128", "name": "amountXMax", "type": "uint128" }, { "internalType": "uint128", "name": "amountYMax", "type": "uint128" } ], "name": "getMintAmounts", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" }, { "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPositionID", "outputs": [ { "internalType": "bytes32", "name": "positionID", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUnderlyingBalances", "outputs": [ { "internalType": "uint256", "name": "amountXCurrent", "type": "uint256" }, { "internalType": "uint256", "name": "amountYCurrent", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "getUnderlyingBalancesByShare", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "fromIdx", "type": "uint256" }, { "internalType": "uint256", "name": "toIdx", "type": "uint256" } ], "name": "getUserVaults", "outputs": [ { "components": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tokenX", "type": "uint256" }, { "internalType": "uint256", "name": "tokenY", "type": "uint256" } ], "internalType": "struct DataTypes.UserVaultInfo[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inThePosition", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_pool", "type": "address" }, { "internalType": "int24", "name": "_pointDelta", "type": "int24" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "leftPoint", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managerBalanceX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managerBalanceY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managingFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "internalType": "uint256[2]", "name": "maxAmounts", "type": "uint256[2]" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenXAmount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenYAmount", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "mintDepositCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintStarted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "performanceFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pointDelta", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pool", "outputs": [ { "internalType": "contract IiZiSwapPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pullFeeFromPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[2]", "name": "minAmounts", "type": "uint256[2]" } ], "name": "removeLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rightPoint", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "zeroForOne", "type": "bool" }, { "internalType": "uint128", "name": "swapAmount", "type": "uint128" }, { "internalType": "int24", "name": "pointLimit", "type": "int24" }, { "internalType": "uint256", "name": "minAmountIn", "type": "uint256" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountX", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenXAmount", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "swapX2YCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "tokenYAmount", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "swapY2XCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenX", "outputs": [ { "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenY", "outputs": [ { "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newManager", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "newManagingFee", "type": "uint16" }, { "internalType": "uint16", "name": "newPerformanceFee", "type": "uint16" } ], "name": "updateFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int24", "name": "leftPoint", "type": "int24" }, { "internalType": "int24", "name": "rightPoint", "type": "int24" } ], "name": "updatePoints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "userCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "userVaults", "outputs": [ { "components": [ { "internalType": "bool", "name": "exists", "type": "bool" }, { "internalType": "uint256", "name": "tokenX", "type": "uint256" }, { "internalType": "uint256", "name": "tokenY", "type": "uint256" } ], "internalType": "struct DataTypes.UserVault", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "idx", "type": "uint256" } ], "name": "users", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60a06040523060601b6080523480156200001857600080fd5b506200002362000029565b620000eb565b600054610100900460ff1615620000965760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e9576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805160601c6137c46200012660003960008181610ceb01528181610d34015281816111ea0152818161122a01526112a201526137c46000f3fe6080604052600436106102f65760003560e01c8063715018a611610191578063a9722cf3116100e2578063d3e1c28411610090578063d3e1c2841461094e578063d7e458b51461096e578063dd62ed3e14610983578063df28408a146109a3578063ec14ffb5146109b8578063f173c7f5146109d8578063f2fde38b146109f8578063f3d2350e14610a1857600080fd5b8063a9722cf31461084f578063b341ee9f1461086f578063b7d19fc41461088f578063bb44b413146108ae578063c45a0155146108c7578063c653089f146108e6578063cd40f2a51461091357600080fd5b806395d89b411161013f57806395d89b411461078e57806397365f3d146107a35780639cd643cc146107b95780639d6933ae146107d9578063a279cd3e146107f9578063a457c2d71461080f578063a9059cbb1461082f57600080fd5b8063715018a6146106d957806371908a03146106ee57806379cc6790146107035780638456cb591461072357806384fe2b3d1461073857806387788782146107585780639403c1ae1461077957600080fd5b8063395093511161024b57806352d1902d116101f957806352d1902d146105d657806358c51ce6146105eb5780635c975abb1461061a578063601b48a41461063357806362c3fa0e146106635780636d3202be1461068357806370a08231146106a357600080fd5b806339509351146105105780633d048c27146105305780633f4ba83a146105505780634043f5ca14610565578063449a52f814610585578063481c6a75146105a55780634f1ef286146105c357600080fd5b806318160ddd116102a857806318160ddd1461041b578063187806841461043057806323b872dd146104505780632958d03114610470578063313ce567146104b45780633659cfe6146104d0578063365b98b2146104f057600080fd5b806306fdde03146102fb57806307973ccf14610326578063095ea7b31461034657806311fbb9b2146103765780631322d9541461039857806316dc165b146103c257806316f0115b146103f5575b600080fd5b34801561030757600080fd5b50610310610a38565b60405161031d9190613435565b60405180910390f35b34801561033257600080fd5b50610166545b60405190815260200161031d565b34801561035257600080fd5b506103666103613660046130e2565b610aca565b604051901515815260200161031d565b34801561038257600080fd5b506103966103913660046131a8565b610ae4565b005b3480156103a457600080fd5b506103ad610b66565b6040805192835260208301919091520161031d565b3480156103ce57600080fd5b50610160546001600160a01b03165b6040516001600160a01b03909116815260200161031d565b34801561040157600080fd5b5061015f54600160481b90046001600160a01b03166103dd565b34801561042757600080fd5b5060fd54610338565b34801561043c57600080fd5b5061039661044b366004613310565b610bf6565b34801561045c57600080fd5b5061036661046b366004613002565b610c4c565b34801561047c57600080fd5b5061049061048b366004612f1f565b610c72565b6040805182511515815260208084015190820152918101519082015260600161031d565b3480156104c057600080fd5b506040516012815260200161031d565b3480156104dc57600080fd5b506103966104eb366004612f1f565b610ce0565b3480156104fc57600080fd5b506103dd61050b366004613291565b610db2565b34801561051c57600080fd5b5061036661052b3660046130e2565b610df4565b34801561053c57600080fd5b5061039661054b36600461308f565b610e16565b34801561055c57600080fd5b5061039661119f565b34801561057157600080fd5b5061016154600160a01b900460ff16610366565b34801561059157600080fd5b506103966105a03660046130e2565b6111b1565b3480156105b157600080fd5b5060c9546001600160a01b03166103dd565b6103966105d1366004613042565b6111df565b3480156105e257600080fd5b50610338611295565b3480156105f757600080fd5b5061015f54600160301b900460020b5b60405160029190910b815260200161031d565b34801561062657600080fd5b5061012d5460ff16610366565b34801561063f57600080fd5b5061016254600160a01b900461ffff165b60405161ffff909116815260200161031d565b34801561066f57600080fd5b506103ad61067e366004613144565b611343565b34801561068f57600080fd5b506103ad61069e3660046131da565b611406565b3480156106af57600080fd5b506103386106be366004612f1f565b6001600160a01b0316600090815260fb602052604090205490565b3480156106e557600080fd5b506103966114b1565b3480156106fa57600080fd5b506103ad6114c3565b34801561070f57600080fd5b5061039661071e3660046130e2565b611501565b34801561072f57600080fd5b5061039661152b565b34801561074457600080fd5b50610396610753366004613310565b61153b565b34801561076457600080fd5b5061016254600160b01b900461ffff16610650565b34801561078557600080fd5b506103966115a9565b34801561079a57600080fd5b5061031061163a565b3480156107af57600080fd5b5061016354610338565b3480156107c557600080fd5b506103966107d436600461310d565b611649565b3480156107e557600080fd5b506103ad6107f43660046132a9565b6116bf565b34801561080557600080fd5b5061016454610338565b34801561081b57600080fd5b5061036661082a3660046130e2565b611773565b34801561083b57600080fd5b5061036661084a3660046130e2565b6117f9565b34801561085b57600080fd5b5061016154600160a81b900460ff16610366565b34801561087b57600080fd5b506103ad61088a3660046132a9565b611807565b34801561089b57600080fd5b50610161546001600160a01b03166103dd565b3480156108ba57600080fd5b5061015f5460020b610607565b3480156108d357600080fd5b50610162546001600160a01b03166103dd565b3480156108f257600080fd5b506109066109013660046132cc565b611857565b60405161031d91906133d3565b34801561091f57600080fd5b5061093361092e36600461323f565b611a3a565b6040805193845260208401929092529082015260600161031d565b34801561095a57600080fd5b50610396610969366004613310565b611ae9565b34801561097a57600080fd5b50610396611b1b565b34801561098f57600080fd5b5061033861099e366004612fca565b611b5c565b3480156109af57600080fd5b50610338611b87565b3480156109c457600080fd5b5061015f546301000000900460020b610607565b3480156109e457600080fd5b506103ad6109f3366004613291565b611c13565b348015610a0457600080fd5b50610396610a13366004612f1f565b611cab565b348015610a2457600080fd5b50610396610a33366004613268565b611d23565b606060fe8054610a4790613682565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390613682565b8015610ac05780601f10610a9557610100808354040283529160200191610ac0565b820191906000526020600020905b815481529060010190602001808311610aa357829003601f168201915b5050505050905090565b600033610ad8818585611d76565b60019150505b92915050565b610aec611e9a565b60405162b4d17960e11b815261015f6004820152600283810b602483015282900b604482015273e621d00cb578bcac68896e55d60a20317c893e5590630169a2f2906064015b60006040518083038186803b158015610b4a57600080fd5b505af4158015610b5e573d6000803e3d6000fd5b505050505050565b60405162e80aa560e61b815261015f6004820152600090819073e621d00cb578bcac68896e55d60a20317c893e5590633a02a940906024015b604080518083038186803b158015610bb657600080fd5b505af4158015610bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bee91906132ed565b915091509091565b61015f54600160481b90046001600160a01b03163314610c2857604051620b7d9960e41b815260040160405180910390fd5b8315610c465761016054610c46906001600160a01b03163386611eff565b50505050565b600033610c5a858285611f56565b610c65858585611fca565b60019150505b9392505050565b610c98604051806060016040528060001515815260200160008152602001600081525090565b506001600160a01b0316600090815261016560209081526040918290208251606081018452815460ff1615158152600182015492810192909252600201549181019190915290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d325760405162461bcd60e51b8152600401610d2990613468565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d6461216e565b6001600160a01b031614610d8a5760405162461bcd60e51b8152600401610d29906134b4565b610d938161218a565b60408051600080825260208201909252610daf918391906121b6565b50565b600061015f6007018281548110610dd957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b600033610ad8818585610e078383611b5c565b610e119190613627565b611d76565b600054610100900460ff1615808015610e365750600054600160ff909116105b80610e505750303b158015610e50575060005460ff166001145b610eb35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d29565b6000805460ff191660011790558015610ed6576000805461ff0019166101001790555b600080600084806020019051810190610eef9190612f57565b919450925090506001600160a01b038316610f1d57604051636ba0d85d60e11b815260040160405180910390fd5b610f25612330565b610f2d612357565b610f35612386565b610f3f82826123b5565b610f476123e6565b61015f8054600160481b600160e81b031916600160481b6001600160a01b038a811682029290921792839055604080516316dc165b60e01b8152905191909304909116916316dc165b916004808301926020929190829003018186803b158015610fb057600080fd5b505afa158015610fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe89190612f3b565b61016080546001600160a01b0319166001600160a01b0392831617905561015f5460408051632df467f160e21b81529051600160481b9092049092169163b7d19fc4916004808301926020929190829003018186803b15801561104a57600080fd5b505afa15801561105e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110829190612f3b565b61016180546001600160a01b03929092166001600160a01b031992831617905561015f8054600289900b62ffffff16600160301b0268ffffff0000000000001990911617815561016280549092163317909155604051630e94042160e41b81526004810191909152600060248201526103e8604482015273e621d00cb578bcac68896e55d60a20317c893e559063e94042109060640160006040518083038186803b15801561113057600080fd5b505af4158015611144573d6000803e3d6000fd5b5050505061115183612415565b5050508015610c46576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b6111a7611e9a565b6111af612467565b565b3330146111d1576040516373d903e760e01b815260040160405180910390fd5b6111db82826124ba565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156112285760405162461bcd60e51b8152600401610d2990613468565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661125a61216e565b6001600160a01b0316146112805760405162461bcd60e51b8152600401610d29906134b4565b6112898261218a565b6111db828260016121b6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113305760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610d29565b5060008051602061372883398151915290565b60008061134e611e9a565b604051632245988b60e21b815261015f600482015286151560248201526001600160801b0386166044820152600285900b60648201526084810184905273e621d00cb578bcac68896e55d60a20317c893e5590638916622c9060a401604080518083038186803b1580156113c157600080fd5b505af41580156113d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f991906132ed565b9150915094509492505050565b600080611411611e9a565b6040516338a700bb60e21b815273e621d00cb578bcac68896e55d60a20317c893e559063e29c02ec906114549061015f908b908b908b908b908b90600401613565565b604080518083038186803b15801561146b57600080fd5b505af415801561147f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a391906132ed565b915091509550959350505050565b6114b9611e9a565b6111af6000612415565b604051634fce073b60e11b815261015f6004820152600090819073e621d00cb578bcac68896e55d60a20317c893e5590639f9c0e7690602401610b9f565b333014611521576040516373d903e760e01b815260040160405180910390fd5b6111db8282612575565b611533611e9a565b6111af6126a3565b61015f54600160481b90046001600160a01b0316331461156d57604051620b7d9960e41b815260040160405180910390fd5b831561158b576101605461158b906001600160a01b03163386611eff565b8215610c465761016154610c46906001600160a01b03163385611eff565b6115b1611e9a565b73e621d00cb578bcac68896e55d60a20317c893e55631c2226f961015f6115e060c9546001600160a01b031690565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015b60006040518083038186803b15801561162657600080fd5b505af4158015610c46573d6000803e3d6000fd5b606060ff8054610a4790613682565b611651611e9a565b6040516320039f6d60e11b815273e621d00cb578bcac68896e55d60a20317c893e55906340073eda9061168c9061015f90859060040161354b565b60006040518083038186803b1580156116a457600080fd5b505af41580156116b8573d6000803e3d6000fd5b5050505050565b6000806116ca6126e1565b6116d261273b565b60405163593c031b60e11b815273e621d00cb578bcac68896e55d60a20317c893e559063b27806369061170f9061015f90889088906004016135af565b604080518083038186803b15801561172657600080fd5b505af415801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e91906132ed565b9150915061176c6001606555565b9250929050565b600033816117818286611b5c565b9050838110156117e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d29565b6117ee8286868403611d76565b506001949350505050565b600033610ad8818585611fca565b6000806118126126e1565b61181a61273b565b604051634d08da3960e01b815273e621d00cb578bcac68896e55d60a20317c893e5590634d08da399061170f9061015f90889088906004016135af565b606082158015611865575081155b15611871576101665491505b600061187d848461363f565b6001600160401b038111156118a257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561190057816020015b6118ed604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816118c05790505b5090506000845b84811015611a3057600061015f600601600061015f600701848154811061193e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528281019390935260409182019020815160608082018452825460ff161515825260018301549482019490945260029091015481830152815192830190915261016680549193508291859081106119bd57634e487b7160e01b600052603260045260246000fd5b600091825260209182902001546001600160a01b03168252838101519082015260408084015191015284846119f1816136bd565b955081518110611a1157634e487b7160e01b600052603260045260246000fd5b6020026020010181905250508080611a28906136bd565b915050611907565b5090949350505050565b60405163872c953b60e01b815261015f60048201526001600160801b038084166024830152821660448201526000908190819073e621d00cb578bcac68896e55d60a20317c893e559063872c953b9060640160606040518083038186803b158015611aa457600080fd5b505af4158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc919061338a565b9250925092509250925092565b61015f54600160481b90046001600160a01b0316331461158b57604051620b7d9960e41b815260040160405180910390fd5b611b23611e9a565b604051635e7f972b60e01b815261015f600482015273e621d00cb578bcac68896e55d60a20317c893e5590635e7f972b9060240161160e565b6001600160a01b03918216600090815260fc6020908152604080832093909416825291909152205490565b604051631517039160e01b815261015f600482015260009073e621d00cb578bcac68896e55d60a20317c893e559063151703919060240160206040518083038186803b158015611bd657600080fd5b505af4158015611bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0e9190613190565b905090565b604051635c02166b60e11b815261015f600482015260248101829052600090819073e621d00cb578bcac68896e55d60a20317c893e559063b8042cd690604401604080518083038186803b158015611c6a57600080fd5b505af4158015611c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca291906132ed565b91509150915091565b611cb3611e9a565b6001600160a01b038116611d1a5760405162461bcd60e51b815260206004820152602860248201527f4f776e61626c653a206e6577206d616e6167657220697320746865207a65726f604482015267206164647265737360c01b6064820152608401610d29565b610daf81612415565b611d2b611e9a565b604051630e94042160e41b815261015f600482015261ffff80841660248301528216604482015273e621d00cb578bcac68896e55d60a20317c893e559063e940421090606401610b32565b6001600160a01b038316611dd85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d29565b6001600160a01b038216611e395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d29565b6001600160a01b03838116600081815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60c9546001600160a01b031633146111af5760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d616e616760448201526132b960f11b6064820152608401610d29565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611f51908490612789565b505050565b6000611f628484611b5c565b90506000198114610c465781811015611fbd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d29565b610c468484848403611d76565b6001600160a01b03831661202e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d29565b6001600160a01b0382166120905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d29565b61209b83838361285b565b6001600160a01b038316600090815260fb6020526040902054818110156121135760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d29565b6001600160a01b03808516600081815260fb6020526040808220868603905592861680825290839020805486019055915160008051602061376f833981519152906121619086815260200190565b60405180910390a3610c46565b600080516020613728833981519152546001600160a01b031690565b610162546001600160a01b03163314610daf57604051631b1319e560e01b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156121e957611f51836128e2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561222257600080fd5b505afa925050508015612252575060408051601f3d908101601f1916820190925261224f91810190613190565b60015b6122b55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610d29565b60008051602061372883398151915281146123245760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610d29565b50611f5183838361297e565b600054610100900460ff166111af5760405162461bcd60e51b8152600401610d2990613500565b600054610100900460ff1661237e5760405162461bcd60e51b8152600401610d2990613500565b6111af6129a3565b600054610100900460ff166123ad5760405162461bcd60e51b8152600401610d2990613500565b6111af6129ca565b600054610100900460ff166123dc5760405162461bcd60e51b8152600401610d2990613500565b6111db82826129fa565b600054610100900460ff1661240d5760405162461bcd60e51b8152600401610d2990613500565b6111af612a48565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61246f612a7c565b61012d805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166125105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d29565b61251c6000838361285b565b8060fd600082825461252e9190613627565b90915550506001600160a01b038216600081815260fb602090815260408083208054860190555184815260008051602061376f833981519152910160405180910390a35050565b6001600160a01b0382166125d55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d29565b6125e18260008361285b565b6001600160a01b038216600090815260fb6020526040902054818110156126555760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d29565b6001600160a01b038316600081815260fb60209081526040808320868603905560fd805487900390555185815291929160008051602061376f833981519152910160405180910390a3505050565b6126ab61273b565b61012d805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861249d3390565b600260655414156127345760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d29565b6002606555565b61012d5460ff16156111af5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610d29565b6001606555565b60006127de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ac69092919063ffffffff16565b805190915015611f5157808060200190518101906127fc9190613128565b611f515760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d29565b604051636cff298760e01b815261015f60048201526001600160a01b038085166024830152831660448201526064810182905273e621d00cb578bcac68896e55d60a20317c893e5590636cff29879060840160006040518083038186803b1580156128c557600080fd5b505af41580156128d9573d6000803e3d6000fd5b50505050505050565b6001600160a01b0381163b61294f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610d29565b60008051602061372883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61298783612add565b6000825111806129945750805b15611f5157610c468383612b1d565b600054610100900460ff166127825760405162461bcd60e51b8152600401610d2990613500565b600054610100900460ff166129f15760405162461bcd60e51b8152600401610d2990613500565b6111af33612415565b600054610100900460ff16612a215760405162461bcd60e51b8152600401610d2990613500565b8151612a349060fe906020850190612da1565b508051611f519060ff906020840190612da1565b600054610100900460ff16612a6f5760405162461bcd60e51b8152600401610d2990613500565b61012d805460ff19169055565b61012d5460ff166111af5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610d29565b6060612ad58484600085612c11565b949350505050565b612ae6816128e2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b612b855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610d29565b600080846001600160a01b031684604051612ba091906133b7565b600060405180830381855af49150503d8060008114612bdb576040519150601f19603f3d011682016040523d82523d6000602084013e612be0565b606091505b5091509150612c08828260405180606001604052806027815260200161374860279139612cec565b95945050505050565b606082471015612c725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d29565b600080866001600160a01b03168587604051612c8e91906133b7565b60006040518083038185875af1925050503d8060008114612ccb576040519150601f19603f3d011682016040523d82523d6000602084013e612cd0565b606091505b5091509150612ce187838387612d05565b979650505050505050565b60608315612cfb575081610c6b565b610c6b8383612d77565b60608315612d71578251612d6a576001600160a01b0385163b612d6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d29565b5081612ad5565b612ad583835b815115612d875781518083602001fd5b8060405162461bcd60e51b8152600401610d299190613435565b828054612dad90613682565b90600052602060002090601f016020900481019282612dcf5760008555612e15565b82601f10612de857805160ff1916838001178555612e15565b82800160010185558215612e15579182015b82811115612e15578251825591602001919060010190612dfa565b50612e21929150612e25565b5090565b5b80821115612e215760008155600101612e26565b8060408101831015610ade57600080fd5b600082601f830112612e5b578081fd5b8135612e6e612e6982613600565b6135d0565b818152846020838601011115612e82578283fd5b816020850160208301379081016020019190915292915050565b8035600281900b8114612eae57600080fd5b919050565b600082601f830112612ec3578081fd5b8151612ed1612e6982613600565b818152846020838601011115612ee5578283fd5b612ad5826020830160208701613656565b80356001600160801b0381168114612eae57600080fd5b803561ffff81168114612eae57600080fd5b600060208284031215612f30578081fd5b8135610c6b81613704565b600060208284031215612f4c578081fd5b8151610c6b81613704565b600080600060608486031215612f6b578182fd5b8351612f7681613704565b60208501519093506001600160401b0380821115612f92578384fd5b612f9e87838801612eb3565b93506040860151915080821115612fb3578283fd5b50612fc086828701612eb3565b9150509250925092565b60008060408385031215612fdc578182fd5b8235612fe781613704565b91506020830135612ff781613704565b809150509250929050565b600080600060608486031215613016578283fd5b833561302181613704565b9250602084013561303181613704565b929592945050506040919091013590565b60008060408385031215613054578182fd5b823561305f81613704565b915060208301356001600160401b03811115613079578182fd5b61308585828601612e4b565b9150509250929050565b6000806000606084860312156130a3578283fd5b83356130ae81613704565b92506130bc60208501612e9c565b915060408401356001600160401b038111156130d6578182fd5b612fc086828701612e4b565b600080604083850312156130f4578182fd5b82356130ff81613704565b946020939093013593505050565b60006040828403121561311e578081fd5b610c6b8383612e3a565b600060208284031215613139578081fd5b8151610c6b81613719565b60008060008060808587031215613159578182fd5b843561316481613719565b935061317260208601612ef6565b925061318060408601612e9c565b9396929550929360600135925050565b6000602082840312156131a1578081fd5b5051919050565b600080604083850312156131ba578182fd5b6131c383612e9c565b91506131d160208401612e9c565b90509250929050565b600080600080600060c086880312156131f1578283fd5b6131fa86612e9c565b945061320860208701612e9c565b935061321660408701612ef6565b925061322460608701612ef6565b91506132338760808801612e3a565b90509295509295909350565b60008060408385031215613251578182fd5b61325a83612ef6565b91506131d160208401612ef6565b6000806040838503121561327a578182fd5b61328383612f0d565b91506131d160208401612f0d565b6000602082840312156132a2578081fd5b5035919050565b600080606083850312156132bb578182fd5b823591506131d18460208501612e3a565b600080604083850312156132de578182fd5b50508035926020909101359150565b600080604083850312156132ff578182fd5b505080516020909101519092909150565b60008060008060608587031215613325578182fd5b843593506020850135925060408501356001600160401b0380821115613349578384fd5b818701915087601f83011261335c578384fd5b81358181111561336a578485fd5b88602082850101111561337b578485fd5b95989497505060200194505050565b60008060006060848603121561339e578081fd5b8351925060208401519150604084015190509250925092565b600082516133c9818460208701613656565b9190910192915050565b602080825282518282018190526000919060409081850190868401855b8281101561342857815180516001600160a01b03168552868101518786015285015185850152606090930192908501906001016133f0565b5091979650505050505050565b6020815260008251806020840152613454816040850160208701613656565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b828152606081016040836020840137600081529392505050565b868152600286810b602083015285900b6040808301919091526001600160801b0385811660608401528416608083015260e08201908360a084013760008152979650505050505050565b83815260208101839052608081016040838184013760008152949350505050565b604051601f8201601f191681016001600160401b03811182821017156135f8576135f86136ee565b604052919050565b60006001600160401b03821115613619576136196136ee565b50601f01601f191660200190565b6000821982111561363a5761363a6136d8565b500190565b600082821015613651576136516136d8565b500390565b60005b83811015613671578181015183820152602001613659565b83811115610c465750506000910152565b600181811c9082168061369657607f821691505b602082108114156136b757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156136d1576136d16136d8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610daf57600080fd5b8015158114610daf57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220760807b03fff5f4c70e9eaa2d5a27a4c557935afc5171e91f5185bb5453d438664736f6c63430008040033