solc-0.8.36-doubleshift20 0xdac17f958d2ee523a2206206994597c13d831ec7 optimized-low-runs
5406 bytes
608060405234801561000f575f5ffd5b506004361061017e575f3560e01c806306fdde03146101825780630753c30c146101a0578063095ea7b3146101b55780630e136b19146101c85780630ecb93c0146101ec57806318160ddd146101ff57806323b872dd1461021557806326976e3f1461022857806327e235e314610248578063313ce5671461026757806335390714146102705780633eaaf86b146102795780633f4ba83a1461028257806359bf1abe1461028a5780635c658165146102b55780635c975abb146102df57806370a08231146102f25780638456cb5914610305578063893d20e81461030d5780638da5cb5b1461031d57806395d89b411461032f578063a9059cbb14610337578063c0324c771461034a578063cc872b661461035d578063db006a7514610370578063dd62ed3e14610383578063dd644f7214610396578063e47d60601461039f578063e4997dc5146103c1578063e5b5019a146103d4578063f2fde38b146103dc578063f3bdc228146103ef575b5f5ffd5b61018a610402565b60405161019791906111d6565b60405180910390f35b6101b36101ae366004611221565b61048e565b005b6101b36101c336600461123a565b610501565b600a546101dc90600160a01b900460ff1681565b6040519015158152602001610197565b6101b36101fa366004611221565b6105a0565b610207610607565b604051908152602001610197565b6101b3610223366004611262565b610693565b600a5461023b906001600160a01b031681565b604051610197919061129c565b610207610256366004611221565b60026020525f908152604090205481565b61020760095481565b61020760045481565b61020760015481565b6101b3610730565b6101dc610298366004611221565b6001600160a01b03165f9081526006602052604090205460ff1690565b6102076102c33660046112b0565b600560209081525f928352604080842090915290825290205481565b5f546101dc90600160a01b900460ff1681565b610207610300366004611221565b61078e565b6101b3610839565b5f546001600160a01b031661023b565b5f5461023b906001600160a01b031681565b61018a61089e565b6101b361034536600461123a565b6108ab565b6101b36103583660046112e1565b610960565b6101b361036b366004611301565b6109f5565b6101b361037e366004611301565b610abf565b6102076103913660046112b0565b610b77565b61020760035481565b6101dc6103ad366004611221565b60066020525f908152604090205460ff1681565b6101b36103cf366004611221565b610c30565b6102075f1981565b6101b36103ea366004611221565b610c94565b6101b36103fd366004611221565b610cd6565b6007805461040f90611318565b80601f016020809104026020016040519081016040528092919081815260200182805461043b90611318565b80156104865780601f1061045d57610100808354040283529160200191610486565b820191905f5260205f20905b81548152906001019060200180831161046957829003601f168201915b505050505081565b5f546001600160a01b031633146104a3575f5ffd5b600a80546001600160a01b0383166001600160a81b031990911617600160a01b1790556040517fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e906104f690839061129c565b60405180910390a150565b604061050e816004611364565b361015610519575f5ffd5b600a54600160a01b900460ff161561059157600a5460405163aee92d3360e01b81526001600160a01b039091169063aee92d339061055f90339087908790600401611377565b5f604051808303815f87803b158015610576575f5ffd5b505af1158015610588573d5f5f3e3d5ffd5b50505050505050565b61059b8383610d8d565b505050565b5f546001600160a01b031633146105b5575f5ffd5b6001600160a01b0381165f9081526006602052604090819020805460ff19166001179055517f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc906104f690839061129c565b600a545f90600160a01b900460ff161561068c57600a54604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610663573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610687919061139b565b905090565b5060015490565b5f54600160a01b900460ff16156106a8575f5ffd5b6001600160a01b0383165f9081526006602052604090205460ff16156106cc575f5ffd5b600a54600160a01b900460ff161561072557600a54604051638b477adb60e01b81523360048201526001600160a01b03858116602483015284811660448301526064820184905290911690638b477adb9060840161055f565b61059b838383610e3d565b5f546001600160a01b03163314610745575f5ffd5b5f54600160a01b900460ff16610759575f5ffd5b5f805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600a545f90600160a01b900460ff161561081757600a546040516370a0823160e01b81526001600160a01b03909116906370a08231906107d290859060040161129c565b602060405180830381865afa1580156107ed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610811919061139b565b92915050565b6001600160a01b0382165f90815260026020526040902054610811565b919050565b5f546001600160a01b0316331461084e575f5ffd5b5f54600160a01b900460ff1615610863575f5ffd5b5f805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b6008805461040f90611318565b5f54600160a01b900460ff16156108c0575f5ffd5b335f9081526006602052604090205460ff16156108db575f5ffd5b600a54600160a01b900460ff161561095257600a5460405163370c4c0560e11b81526001600160a01b0390911690636e18980a9061092190339086908690600401611377565b5f604051808303815f87803b158015610938575f5ffd5b505af115801561094a573d5f5f3e3d5ffd5b505050505050565b61095c8282610ffe565b5050565b5f546001600160a01b03163314610975575f5ffd5b60148210610981575f5ffd5b6032811061098d575f5ffd5b60038290556009546109ab906109a490600a611495565b829061114e565b60048190556003546040517fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e926109e9928252602082015260400190565b60405180910390a15050565b5f546001600160a01b03163314610a0a575f5ffd5b600154610a178282611364565b11610a20575f5ffd5b5f80546001600160a01b0316815260026020526040902054610a428282611364565b11610a4b575f5ffd5b5f80546001600160a01b031681526002602052604081208054839290610a72908490611364565b925050819055508060015f828254610a8a9190611364565b90915550506040518181527fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a906020016104f6565b5f546001600160a01b03163314610ad4575f5ffd5b806001541015610ae2575f5ffd5b5f80546001600160a01b0316815260026020526040902054811115610b05575f5ffd5b8060015f828254610b1691906114a0565b90915550505f80546001600160a01b031681526002602052604081208054839290610b429084906114a0565b90915550506040518181527f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a44906020016104f6565b600a545f90600160a01b900460ff1615610c0657600a54604051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610bdb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bff919061139b565b9050610811565b6001600160a01b038084165f90815260056020908152604080832093861683529290522054610bff565b5f546001600160a01b03163314610c45575f5ffd5b6001600160a01b0381165f9081526006602052604090819020805460ff19169055517fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c906104f690839061129c565b5f546001600160a01b03163314610ca9575f5ffd5b6001600160a01b03811615610cd3575f80546001600160a01b0319166001600160a01b0383161790555b50565b5f546001600160a01b03163314610ceb575f5ffd5b6001600160a01b0381165f9081526006602052604090205460ff16610d0e575f5ffd5b5f610d188261078e565b6001600160a01b0383165f908152600260205260408120819055600180549293508392909190610d499084906114a0565b9091555050604080516001600160a01b0384168152602081018390527f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c691016109e9565b6040610d9a816004611364565b361015610da5575f5ffd5b8115801590610dd55750335f9081526005602090815260408083206001600160a01b038716845290915290205415155b15610dde575f5ffd5b335f8181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6060610e4a816004611364565b361015610e55575f5ffd5b6001600160a01b0384165f908152600560209081526040808320338452909152812054600354909190610e979061271090610e9190879061114e565b90611189565b9050600454811115610ea857506004545b5f19821015610edf57610ebb828561119d565b6001600160a01b0387165f9081526005602090815260408083203384529091529020555b5f610eea858361119d565b6001600160a01b0388165f90815260026020526040902054909150610f0f908661119d565b6001600160a01b038089165f908152600260205260408082209390935590881681522054610f3d90826111b8565b6001600160a01b0387165f908152600260205260409020558115610fc5575f80546001600160a01b0316815260026020526040902054610f7d90836111b8565b5f80546001600160a01b039081168252600260209081526040808420949094559154925185815292811692908a16915f5160206114fe5f395f51905f52910160405180910390a35b6040518181526001600160a01b0380881691908916905f5160206114fe5f395f51905f529060200160405180910390a350505050505050565b604061100b816004611364565b361015611016575f5ffd5b5f611032612710610e916003548661114e90919063ffffffff16565b905060045481111561104357506004545b5f61104e848361119d565b335f9081526002602052604090205490915061106a908561119d565b335f90815260026020526040808220929092556001600160a01b0387168152205461109590826111b8565b6001600160a01b0386165f90815260026020526040902055811561111a575f80546001600160a01b03168152600260205260409020546110d590836111b8565b5f80546001600160a01b039081168252600260209081526040808420949094559154925185815292169133915f5160206114fe5f395f51905f52910160405180910390a35b6040518181526001600160a01b0386169033905f5160206114fe5f395f51905f529060200160405180910390a35050505050565b5f825f0361115d57505f610811565b5f61116883856114b3565b90508261117585836114ca565b14611182576111826114e9565b9392505050565b5f8061119583856114ca565b949350505050565b5f828211156111ae576111ae6114e9565b61118282846114a0565b5f806111c48385611364565b905083811015611182576111826114e9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610834575f5ffd5b5f60208284031215611231575f5ffd5b6111828261120b565b5f5f6040838503121561124b575f5ffd5b6112548361120b565b946020939093013593505050565b5f5f5f60608486031215611274575f5ffd5b61127d8461120b565b925061128b6020850161120b565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b5f5f604083850312156112c1575f5ffd5b6112ca8361120b565b91506112d86020840161120b565b90509250929050565b5f5f604083850312156112f2575f5ffd5b50508035926020909101359150565b5f60208284031215611311575f5ffd5b5035919050565b600181811c9082168061132c57607f821691505b60208210810361134a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561081157610811611350565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f602082840312156113ab575f5ffd5b5051919050565b6001815b60018411156113ed578085048111156113d1576113d1611350565b60018416156113df57908102905b60019390931c9280026113b6565b935093915050565b5f8261140357506001610811565b8161140f57505f610811565b8160018114611425576002811461142f5761144b565b6001915050610811565b60ff84111561144057611440611350565b50506001821b610811565b5060208310610133831016604e8410600b841016171561146e575081810a610811565b61147a5f1984846113b2565b805f190482111561148d5761148d611350565b029392505050565b5f61118283836113f5565b8181038181111561081157610811611350565b808202811582820484141761081157610811611350565b5f826114e457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52600160045260245ffdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef