[ { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "moduleRegistry_", "type": "address" }, { "internalType": "address", "name": "manager_", "type": "address" }, { "internalType": "address", "name": "token0_", "type": "address" }, { "internalType": "address", "name": "token1_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ActiveModule", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "property", "type": "string" } ], "name": "AddressZero", "type": "error" }, { "inputs": [], "name": "AllowanceOverflow", "type": "error" }, { "inputs": [], "name": "AllowanceUnderflow", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "module", "type": "address" } ], "name": "AlreadyWhitelisted", "type": "error" }, { "inputs": [], "name": "ArrayNotSameLength", "type": "error" }, { "inputs": [], "name": "BurnOverflow", "type": "error" }, { "inputs": [], "name": "BurnZero", "type": "error" }, { "inputs": [], "name": "CallFailed", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidPermit", "type": "error" }, { "inputs": [], "name": "MintZero", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "ModuleNotEmpty", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NotImplemented", "type": "error" }, { "inputs": [], "name": "NotSameGuardian", "type": "error" }, { "inputs": [], "name": "NotWhitelistedBeacon", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "module", "type": "address" } ], "name": "NotWhitelistedModule", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "manager", "type": "address" } ], "name": "OnlyManager", "type": "error" }, { "inputs": [], "name": "OnlyOwner", "type": "error" }, { "inputs": [], "name": "PermitExpired", "type": "error" }, { "inputs": [], "name": "SameManager", "type": "error" }, { "inputs": [], "name": "SameModule", "type": "error" }, { "inputs": [], "name": "Token0EqToken1", "type": "error" }, { "inputs": [], "name": "Token0GtToken1", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "modules", "type": "address[]" } ], "name": "LogBlackListedModules", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "LogBurn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "LogMint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "module", "type": "address" } ], "name": "LogSetFirstModule", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "manager", "type": "address" } ], "name": "LogSetManager", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "module", "type": "address" }, { "indexed": false, "internalType": "bytes[]", "name": "payloads", "type": "bytes[]" } ], "name": "LogSetModule", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "modules", "type": "address[]" } ], "name": "LogWhiteListedModules", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "module", "type": "address" } ], "name": "LogWhitelistedModule", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "LogWithdrawManagerBalance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "result", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "result", "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": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "modules_", "type": "address[]" } ], "name": "blacklistModules", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares_", "type": "uint256" }, { "internalType": "address", "name": "receiver_", "type": "address" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getInits", "outputs": [ { "internalType": "uint256", "name": "init0", "type": "uint256" }, { "internalType": "uint256", "name": "init1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "module_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares_", "type": "uint256" }, { "internalType": "address", "name": "receiver_", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "module", "outputs": [ { "internalType": "contract IArrakisLPModule", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "moduleRegistry", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "module_", "type": "address" }, { "internalType": "bytes[]", "name": "payloads_", "type": "bytes[]" } ], "name": "setModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalUnderlying", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint160", "name": "priceX96_", "type": "uint160" } ], "name": "totalUnderlyingAtPrice", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "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": "", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "beacons_", "type": "address[]" }, { "internalType": "bytes[]", "name": "data_", "type": "bytes[]" } ], "name": "whitelistModules", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "whitelistedModules", "outputs": [ { "internalType": "address[]", "name": "modules", "type": "address[]" } ], "stateMutability": "view", "type": "function" } ]
60e06040523480156200001157600080fd5b5060405162003266380380620032668339810160408190526200003491620003ba565b6001600055838383836001600160a01b0384166200008c5760405163c5dbe6e760e01b815260206004820152600f60248201526e4d6f64756c6520526567697374727960881b60448201526064015b60405180910390fd5b6001600160a01b038316620000cf5760405163c5dbe6e760e01b815260206004820152600760248201526626b0b730b3b2b960c91b604482015260640162000083565b6001600160a01b038216620001125760405163c5dbe6e760e01b81526020600482015260076024820152660546f6b656e20360cc1b604482015260640162000083565b6001600160a01b038116620001555760405163c5dbe6e760e01b8152602060048201526007602482015266546f6b656e203160c81b604482015260640162000083565b806001600160a01b0316826001600160a01b0316111562000189576040516331fdd40160e11b815260040160405180910390fd5b806001600160a01b0316826001600160a01b031603620001bc576040516307ad028d60e31b815260040160405180910390fd5b6001600160a01b03848116608052600280546001600160a01b03191685831690811790915583821660a05290821660c0526040519081527f9b6ffaf4cbfd923495440b7f17ced9394289f001b3ead53ab67e2c3f3e39b0f59060200160405180910390a15050506001600160a01b0388169050620002665760405163c5dbe6e760e01b815260206004820152600560248201526427bbb732b960d91b604482015260640162000083565b62000271876200029c565b60056200027f878262000511565b5060066200028e868262000511565b5050505050505050620005dd565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b80516001600160a01b0381168114620002f057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031d57600080fd5b81516001600160401b03808211156200033a576200033a620002f5565b604051601f8301601f19908116603f01168101908282118183101715620003655762000365620002f5565b816040528381526020925086838588010111156200038257600080fd5b600091505b83821015620003a6578582018301518183018401529082019062000387565b600093810190920192909252949350505050565b600080600080600080600060e0888a031215620003d657600080fd5b620003e188620002d8565b60208901519097506001600160401b0380821115620003ff57600080fd5b6200040d8b838c016200030b565b975060408a01519150808211156200042457600080fd5b50620004338a828b016200030b565b9550506200044460608901620002d8565b93506200045460808901620002d8565b92506200046460a08901620002d8565b91506200047460c08901620002d8565b905092959891949750929550565b600181811c908216806200049757607f821691505b602082108103620004b857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050c57600081815260208120601f850160051c81016020861015620004e75750805b601f850160051c820191505b818110156200050857828155600101620004f3565b5050505b505050565b81516001600160401b038111156200052d576200052d620002f5565b62000545816200053e845462000482565b84620004be565b602080601f8311600181146200057d5760008415620005645750858301515b600019600386901b1c1916600185901b17855562000508565b600085815260208120601f198616915b82811015620005ae578886015182559484019460019091019084016200058d565b5085821015620005cd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c051612c526200061460003960006105ed0152600061028b01526000818161056f0152610daf0152612c526000f3fe6080604052600436106102195760003560e01c806394bf804d1161011d578063c6b29347116100b0578063dd62ed3e1161007f578063f2fde38b11610064578063f2fde38b14610665578063fcd3533c14610678578063fee81cf41461069857600080fd5b8063dd62ed3e1461062f578063f04e283e1461066557600080fd5b8063c6b29347146105b1578063c70920bc146105c6578063d21220a7146105db578063d505accf1461060f57600080fd5b8063acecf6f5116100ec578063acecf6f51461050a578063b86d52981461052a578063b95459e41461055d578063c4d66de81461059157600080fd5b806394bf804d1461048d578063951f1f09146104b557806395d89b41146104d5578063a9059cbb146104ea57600080fd5b80633644e515116101b057806370a082311161017f5780637ecebe00116101645780637ecebe00146104065780638d62cce2146104395780638da5cb5b1461045957600080fd5b806370a08231146103cb578063715018a6146103fe57600080fd5b80633644e5151461035f578063481c6a751461037457806354d1f13d146103a157806355b80e47146103a957600080fd5b806323b872dd116101ec57806323b872dd146102f957806325692962146103195780632b1ba4f114610323578063313ce5671461034357600080fd5b806306fdde031461021e578063095ea7b3146102495780630dfe16811461027957806318160ddd146102d2575b600080fd5b34801561022a57600080fd5b506102336106cb565b6040516102409190612439565b60405180910390f35b34801561025557600080fd5b506102696102643660046124af565b61075d565b6040519015158152602001610240565b34801561028557600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b3480156102de57600080fd5b506805345cdf77eb68f44c545b604051908152602001610240565b34801561030557600080fd5b506102696103143660046124db565b6107b1565b610321610870565b005b34801561032f57600080fd5b5061032161033e366004612568565b6108c0565b34801561034f57600080fd5b5060405160128152602001610240565b34801561036b57600080fd5b506102eb610c1b565b34801561038057600080fd5b506002546102ad9073ffffffffffffffffffffffffffffffffffffffff1681565b610321610c98565b3480156103b557600080fd5b506103be610cd4565b60405161024091906125bd565b3480156103d757600080fd5b506102eb6103e6366004612617565b6387a211a2600c908152600091909152602090205490565b610321610ce5565b34801561041257600080fd5b506102eb610421366004612617565b6338377508600c908152600091909152602090205490565b34801561044557600080fd5b50610321610454366004612634565b610d17565b34801561046557600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927546102ad565b6104a061049b3660046126a0565b610f31565b60408051928352602083019190915201610240565b3480156104c157600080fd5b506103216104d03660046126d0565b6110d0565b3480156104e157600080fd5b50610233611221565b3480156104f657600080fd5b506102696105053660046124af565b611230565b34801561051657600080fd5b506104a0610525366004612617565b6112ab565b34801561053657600080fd5b506001546102ad9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561056957600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561059d57600080fd5b506103216105ac366004612617565b611353565b3480156105bd57600080fd5b506104a0611628565b3480156105d257600080fd5b506104a06116c3565b3480156105e757600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561061b57600080fd5b5061032161062a366004612712565b611732565b34801561063b57600080fd5b506102eb61064a366004612789565b602052637f5e9f20600c908152600091909152603490205490565b610321610673366004612617565b610ce5565b34801561068457600080fd5b506104a06106933660046126a0565b6118cc565b3480156106a457600080fd5b506102eb6106b3366004612617565b63389a75e1600c908152600091909152602090205490565b6060600580546106da906127b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610706906127b7565b80156107535780601f1061072857610100808354040283529160200191610753565b820191906000526020600020905b81548152906001019060200180831161073657829003601f168201915b5050505050905090565b600082602052637f5e9f20600c5233600052816034600c205581600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35060015b92915050565b60008360601b33602052637f5e9f208117600c526034600c20805460018101156107f157808511156107eb576313be252b6000526004601cfd5b84810382555b50506387a211a28117600c526020600c2080548085111561081a5763f4d678b86000526004601cfd5b84810382555050836000526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60025473ffffffffffffffffffffffffffffffffffffffff163314610938576002546040517f59c8c6cc00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b610940611a5f565b60015473ffffffffffffffffffffffffffffffffffffffff620100009091048116908416810361099c576040517fde832e2d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a7600385611ad2565b6109f5576040517f7b76a60e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161092f565b600180547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff871602179055610a4381611b01565b50506040517ff3fef3a300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152670de0b6b3a7640000602483015282169063f3fef3a39060440160408051808303816000875af1158015610ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae4919061280a565b5082905060005b81811015610bce5760008673ffffffffffffffffffffffffffffffffffffffff16868684818110610b1e57610b1e61282e565b9050602002810190610b30919061285d565b604051610b3e9291906128c2565b6000604051808303816000865af19150503d8060008114610b7b576040519150601f19603f3d011682016040523d82523d6000602084013e610b80565b606091505b5050905080610bbb576040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5080610bc681612901565b915050610aeb565b507f098a4cb3597f0b783d955415cf1025a9452365cac4dcddca246a394e73cca90a858585604051610c0293929190612982565b60405180910390a15050610c166001600055565b505050565b600080610c266106cb565b8051906020012090506040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81528160208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209250505090565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6060610ce06003611bbf565b905090565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d1f611bcc565b82818114610d59576040517f261f2a5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008167ffffffffffffffff811115610d7457610d74612a7b565b604051908082528060200260200182016040528015610d9d578160200160208202803683370190505b50905060005b82811015610ef15760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663455f4bb1308a8a86818110610dfc57610dfc61282e565b9050602002016020810190610e119190612617565b898987818110610e2357610e2361282e565b9050602002810190610e35919061285d565b6040518563ffffffff1660e01b8152600401610e549493929190612aaa565b6020604051808303816000875af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190612aee565b905080838381518110610eac57610eac61282e565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152610edc600382611c54565b50508080610ee990612901565b915050610da3565b507f0936fa8fc79e7acdb2f5db0618a6355fdda409b0e5b17e3be004be15bcf4c88481604051610f2191906125bd565b60405180910390a1505050505050565b60008083600003610f6e576040517f4406518e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f816805345cdf77eb68f44c5490565b90506000610fae86670de0b6b3a764000060008511610fa857670de0b6b3a7640000611c76565b84611c76565b905073ffffffffffffffffffffffffffffffffffffffff851661102d576040517fc5dbe6e700000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5265636569766572000000000000000000000000000000000000000000000000604482015260640161092f565b816000036110515761104260006103e8611cdd565b61104e6103e887612b0b565b95505b61105b8587611cdd565b61106481611d5c565b6040805189815273ffffffffffffffffffffffffffffffffffffffff891660208201529081018390526060810182905291955093507fb95558c5fa26a0093cddc7ad7eb438c0475c3d69925f02e8787c72661472ad90906080015b60405180910390a150509250929050565b6110d8611bcc565b8060005b818110156111e25760008484838181106110f8576110f861282e565b905060200201602081019061110d9190612617565b905061111a600382611ad2565b611168576040517f7b76a60e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161092f565b60015473ffffffffffffffffffffffffffffffffffffffff8083166201000090920416036111c2576040517ffafd81f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111cd600382611e2c565b505080806111da90612901565b9150506110dc565b507fbb08f8051cd2fa9d17f2636a7cf104cf87e85218c2a9061b0ade4fc5d013f3288383604051611214929190612b1e565b60405180910390a1505050565b6060600680546106da906127b7565b60006387a211a2600c52336000526020600c2080548084111561125b5763f4d678b86000526004601cfd5b83810382555050826000526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001546040517facecf6f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000928392620100009091049091169063acecf6f5906024016040805180830381865afa158015611326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a919061280a565b91509150915091565b600154610100900460ff161580801561137057506001805460ff16105b806113895750303b15801561138957506001805460ff16145b611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161092f565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055801561147257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166114ef576040517fc5dbe6e700000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4d6f64756c650000000000000000000000000000000000000000000000000000604482015260640161092f565b6114fa600383611c54565b50600180547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527fc36d7d831827b79e3044eab60b0e78bcbddb1e832fdd0e848aa633471f7a2dce9060200160405180910390a160405173ffffffffffffffffffffffffffffffffffffffff831681527ff2b7116a60dcb1f53337287d3735fc1ac1b053cc3fd07d605588cc1a879c0df09060200160405180910390a1801561162457600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6b293476040518163ffffffff1660e01b81526004016040805180830381865afa158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb919061280a565b915091509091565b600080600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c70920bc6040518163ffffffff1660e01b81526004016040805180830381865afa158015611697573d6000803e3d6000fd5b600061173c6106cb565b8051906020012090508442111561175b57631a15a3cc6000526004601cfd5b6040518860601b60601c98508760601b60601c975065383775081901600e52886000526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83528360208401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528a60208401528960408401528860608401528060808401528760a084015260c08320604e526042602c206000528660ff1660205285604052846060526020806080600060015afa8b3d51146118675763ddafbaef6000526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000088176040526034602c2087905587897f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250506000606052505050505050565b60008083600003611909576040517fbca9e8db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061191c6805345cdf77eb68f44c5490565b905080851115611958576040517fc0da224d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061196d86670de0b6b3a764000084611e4e565b905073ffffffffffffffffffffffffffffffffffffffff85166119ec576040517fc5dbe6e700000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5265636569766572000000000000000000000000000000000000000000000000604482015260640161092f565b6119f63387611f1a565b611a008582611f9e565b6040805189815273ffffffffffffffffffffffffffffffffffffffff891660208201529081018390526060810182905291955093507f97a53db416643aef28847c991d7cd62b34c7579f1d86acbba5c7dd64cc0d1584906080016110bf565b600260005403611acb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161092f565b6002600055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610869565b6000808273ffffffffffffffffffffffffffffffffffffffff16637ecd67176040518163ffffffff1660e01b815260040160408051808303816000875af1158015611b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b74919061280a565b60408051838152602081018390529294509092507fa292e28c648da34e20b372054caab5f0359198b3b4d5f0ef9945d4616e15dc97910160405180910390a1915091565b6001600055565b6060600061086983612051565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c52576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006108698373ffffffffffffffffffffffffffffffffffffffff84166120ad565b6000611c83848484611e4e565b905060008280611c9557611c95612b79565b8486091115610869577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110611cca57600080fd5b80611cd481612901565b95945050505050565b6805345cdf77eb68f44c5481810181811015611d015763e5cfe9576000526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52816000526020600c208181540181555080602052600c5160601c60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b600080611d67611a5f565b6040805133602482015260448082018690528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f47e7ef2400000000000000000000000000000000000000000000000000000000179052600154600090611e009062010000900473ffffffffffffffffffffffffffffffffffffffff1683346120fc565b905080806020019051810190611e16919061280a565b9094509250611e279150611bb89050565b915091565b60006108698373ffffffffffffffffffffffffffffffffffffffff841661212a565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003611ea55760008411611e9a57600080fd5b508290049050610869565b808411611eb157600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6387a211a2600c52816000526020600c20805480831115611f435763f4d678b86000526004601cfd5b82900390556805345cdf77eb68f44c80548290039055600081815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b6001546040517ff3fef3a300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490526000928392620100009091049091169063f3fef3a39060440160408051808303816000875af1158015612022573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612046919061280a565b909590945092505050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156120a157602002820191906000526020600020905b81548152602001906001019080831161208d575b50505050509050919050565b60008181526001830160205260408120546120f4575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107ab565b5060006107ab565b6060612122848484604051806060016040528060298152602001612bf46029913961221d565b949350505050565b6000818152600183016020526040812054801561221357600061214e600183612b0b565b855490915060009061216290600190612b0b565b90508181146121c75760008660000182815481106121825761218261282e565b90600052602060002001549050808760000184815481106121a5576121a561282e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806121d8576121d8612ba8565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107ab565b60009150506107ab565b6060824710156122af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161092f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122d89190612bd7565b60006040518083038185875af1925050503d8060008114612315576040519150601f19603f3d011682016040523d82523d6000602084013e61231a565b606091505b509150915061232b87838387612336565b979650505050505050565b606083156123cc5782516000036123c55773ffffffffffffffffffffffffffffffffffffffff85163b6123c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161092f565b5081612122565b61212283838151156123e15781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f9190612439565b60005b83811015612430578181015183820152602001612418565b50506000910152565b6020815260008251806020840152612458816040850160208701612415565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146124ac57600080fd5b50565b600080604083850312156124c257600080fd5b82356124cd8161248a565b946020939093013593505050565b6000806000606084860312156124f057600080fd5b83356124fb8161248a565b9250602084013561250b8161248a565b929592945050506040919091013590565b60008083601f84011261252e57600080fd5b50813567ffffffffffffffff81111561254657600080fd5b6020830191508360208260051b850101111561256157600080fd5b9250929050565b60008060006040848603121561257d57600080fd5b83356125888161248a565b9250602084013567ffffffffffffffff8111156125a457600080fd5b6125b08682870161251c565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b8181101561260b57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016125d9565b50909695505050505050565b60006020828403121561262957600080fd5b81356108698161248a565b6000806000806040858703121561264a57600080fd5b843567ffffffffffffffff8082111561266257600080fd5b61266e8883890161251c565b9096509450602087013591508082111561268757600080fd5b506126948782880161251c565b95989497509550505050565b600080604083850312156126b357600080fd5b8235915060208301356126c58161248a565b809150509250929050565b600080602083850312156126e357600080fd5b823567ffffffffffffffff8111156126fa57600080fd5b6127068582860161251c565b90969095509350505050565b600080600080600080600060e0888a03121561272d57600080fd5b87356127388161248a565b965060208801356127488161248a565b95506040880135945060608801359350608088013560ff8116811461276c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561279c57600080fd5b82356127a78161248a565b915060208301356126c58161248a565b600181811c908216806127cb57607f821691505b602082108103612804577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000806040838503121561281d57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261289257600080fd5b83018035915067ffffffffffffffff8211156128ad57600080fd5b60200191503681900382131561256157600080fd5b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612932576129326128d2565b5060010190565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006040820173ffffffffffffffffffffffffffffffffffffffff8616835260206040818501528185835260608501905060608660051b86010192508660005b87811015612a6d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a3603018112612a2357600080fd5b8901848101903567ffffffffffffffff811115612a3f57600080fd5b803603821315612a4e57600080fd5b612a59878284612939565b9650505091830191908301906001016129c2565b509298975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152612ae4606083018486612939565b9695505050505050565b600060208284031215612b0057600080fd5b81516108698161248a565b818103818111156107ab576107ab6128d2565b60208082528181018390526000908460408401835b86811015612b6e578235612b468161248a565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101612b33565b509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008251612be9818460208701612415565b919091019291505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220ddbac3dbb860d2b3f9a2dd75c238e8f0953829edbbf28c4bea2cedde406f552664736f6c6343000813003300000000000000000000000079b57b4d3d0959c3b7564f0c497ad3f004e8614100000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000d2307bed9a55742febe560b11e090427cea89317000000000000000000000000f093f5d9e3fb3e8f96944c87491f38e026496ae5000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000019417272616b6973204d6f64756c617220555344432f5745544800000000000000000000000000000000000000000000000000000000000000000000000000000c414d2f555344432f574554480000000000000000000000000000000000000000
0xa2646970667358221220ddbac3dbb860d2b3f9a2dd75c238e8f0953829edbbf28c4bea2cedde406f552664736f6c6343000813003300000000000000000000000079b57b4d3d0959c3b7564f0c497ad3f004e8614100000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000d2307bed9a55742febe560b11e090427cea89317000000000000000000000000f093f5d9e3fb3e8f96944c87491f38e026496ae5000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000019417272616b6973204d6f64756c617220555344432f5745544800000000000000000000000000000000000000000000000000000000000000000000000000000c414d2f555344432f574554480000000000000000000000000000000000000000