solc-0.8.35 0xdd3f50f8a6cafbe9b31a427582963f465e745af8 via-ir-low-runs
9120 bytes
60806040526004361015610011575f80fd5b5f5f3560e01c806312065fe014610fc85780631b7dd4c014610f275780631e35fed814610f0d5780631eddb62614610ef357806322b1751d14610d9457806327c8f19314610cfa5780633b36f59214610cae57806354fd4d5014610c8e578063606b649714610b4857806363a5db9e1461095157806372f5158d1461084d578063888b042f1461082a578063b7013dc11461073c578063c095415d146106ad578063d0e30db01461016e5763db82047b146100ca575f80fd5b8060031936011261016b576100f06001600160a01b036100e8611486565b1630146110c0565b6101606100fb6113ba565b610158604051916101446030846020808201946f636f6e74726163742e6164647265737360801b86528051918291018484015e810188838201520301601f198101855284610fe2565b91519091206001600160a01b039190611519565b1633146110c0565b610168611146565b80f35b80fd5b508060031936011261016b5761018d6001600160a01b036100e8611486565b6001600160a01b036101a56101a061110b565b611559565b16604051636ada784760e01b8152602081600481855afa90811561038e57839161068e575b5015610630576040516301ae78a160e11b8152602081600481855afa90811561038e5783916105fe575b5034106105965761020c34610207611019565b6116c5565b604051637eb6744f60e11b8152602081600481865afa90811561058b578491610559575b50808211610399575b5050604051630de705b560e01b8152602081600481855afa801561038e57839061035a575b6102699150346121ed565b8261034657670de0b6b3a7640000610282910434611730565b7f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63936001600160a01b031690813b15610342575f916044839260405194859384926394bf804d60e01b845260048401523360248401525af1801561033757610320575b50610168906040513481524260208201527f7aa1a8eb998c779420645fc14513bf058edb347d95c2fc2e6845bdc22f88863160403392a26115f6565b61032d9192505f90610fe2565b5f906101686102e4565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b83526012600452602483fd5b506020813d602011610386575b8161037460209383610fe2565b8101031261034257610269905161025e565b3d9150610367565b6040513d85823e3d90fd5b6040516323fd21a560e11b8152602081600481875afa9081156104c757859161052a575b50156104d25760049060206001600160a01b036103db6101a06111ae565b166040519384809263e60b40bf60e01b82525afa9081156104c7578591610491575b61040792506116c5565b10610413575f80610239565b60405162461bcd60e51b815260206004820152605d60248201525f5160206123805f395f51905f5260448201527f736974696e672028616e64206d61746368696e672077697468206d696e69706f60648201527f6f6c7329206578636565647320746865206d6178696d756d2073697a65000000608482015260a490fd5b90506020823d6020116104bf575b816104ac60209383610fe2565b81010312610342576104079151906103fd565b3d915061049f565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152603f60248201525f5160206123805f395f51905f5260448201527f736974696e67206578636565647320746865206d6178696d756d2073697a65006064820152608490fd5b61054c915060203d602011610552575b6105448183610fe2565b810190611196565b5f6103bd565b503d61053a565b90506020813d602011610583575b8161057460209383610fe2565b8101031261034257515f610230565b3d9150610567565b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152603a60248201527f546865206465706f736974656420616d6f756e74206973206c657373207468616044820152796e20746865206d696e696d756d206465706f7369742073697a6560301b6064820152608490fd5b90506020813d602011610628575b8161061960209383610fe2565b8101031261034257515f6101f4565b3d915061060c565b60405162461bcd60e51b815260206004820152603060248201527f4465706f7369747320696e746f20526f636b657420506f6f6c2061726520637560448201526f1c9c995b9d1b1e48191a5cd8589b195960821b6064820152608490fd5b6106a7915060203d602011610552576105448183610fe2565b5f6101ca565b508060031936011261016b576106cc6001600160a01b036100e8611486565b6101686040516106dd604082610fe2565b600b815261015860208201916a1c9bd8dad95d15985d5b1d60aa1b83526101446030604051809560208201946f636f6e74726163742e6164647265737360801b86525180918484015e810188838201520301601f198101855284610fe2565b503461016b578060031936011261016b5761075d610758611019565b61216a565b61076861075861166a565b918083830393129082841390821593851283168285161761081657508261080d575b82156107f4575b5050156107a357602090604051908152f35b60405162461bcd60e51b8152602060048201526024808201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604482015263666c6f7760e01b6064820152608490fd5b90915081610805575b505f80610791565b90505f6107fd565b8015925061078a565b634e487b7160e01b81526011600452602490fd5b503461016b578060031936011261016b5760206108456113e7565b604051908152f35b508060031936011261016b5761086c6001600160a01b036100e8611486565b60405160208101906e6d696e69706f6f6c2e65786973747360881b82523360601b602f820152602381526108a1604382610fe2565b5190208154604051633d70e7e560e11b815260048101929092526020908290602490829060081c6001600160a01b03165afa908115610946578291610927575b50156108ef57610168611146565b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081b5a5b9a5c1bdbdb60821b6044820152606490fd5b610940915060203d602011610552576105448183610fe2565b5f6108e1565b6040513d84823e3d90fd5b503461016b57602036600319011261016b576004356109796001600160a01b036100e8611486565b6109cd6109846113ba565b610158604051916101446030846020808201946f636f6e74726163742e6164647265737360801b86528051918291018484015e810189838201520301601f198101855284610fe2565b6109d56113e7565b8111610af057817f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316803b15610ad757818091602460405180948193631df699e760e11b83528860048401525af1801561094657610adb575b507f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63936001600160a01b0316803b15610ad757818391600460405180948193630d930b5160e31b83525af1801561094657610ac2575b50506040519081524260208201527f992f462cfb62e164bd03bf07baf2cffce83fbd9370cae10635842b202001212060403392a280f35b81610acc91610fe2565b610ad757815f610a8b565b5080fd5b81610ae591610fe2565b610ad757815f610a36565b60405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e74206578636573732062616c616e636520666f72206044820152691dda5d1a191c985dd85b60b21b6064820152608490fd5b503461016b57602036600319011261016b5780600435610b716001600160a01b036100e8611486565b610b7c61098461138b565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316803b15610c8a57828091602460405180948193631df699e760e11b83528760048401525af190811561038e578391610c72575b50808092335af13d15610c6d573d6001600160401b038111610c595760405190610c0d601f8201601f191660200183610fe2565b81528260203d92013e5b15610c1f5780f35b60405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606490fd5b634e487b7160e01b83526041600452602483fd5b610c17565b81610c7c91610fe2565b610c8757815f610bd9565b50fd5b5050fd5b503461016b578060031936011261016b5760ff6020915416604051908152f35b503461016b578060031936011261016b57610cd26001600160a01b036100e8611486565b6020610cf06001600160a01b03610cea6101a061110b565b16611789565b6040519015158152f35b503461016b578060031936011261016b57610d1e6001600160a01b036100e8611486565b610d346001600160a01b03610cea6101a061110b565b15610d3c5780f35b60405162461bcd60e51b815260206004820152602a60248201527f4465706f7369742061737369676e6d656e7473206172652063757272656e746c6044820152691e48191a5cd8589b195960b21b6064820152608490fd5b50602036600319011261034257610db46001600160a01b036100e8611486565b610e08610dbf61138b565b610158604051916101446030846020808201946f636f6e74726163742e6164647265737360801b86528051918291018484015e81015f838201520301601f198101855284610fe2565b34610e85575b8054819060081c6001600160a01b0316803b15610c8757818091604460405180948193632b6cd4f760e21b8352786465706f7369742e706f6f6c2e6e6f64652e62616c616e636560381b600484015260043560248401525af1801561094657610e745750f35b81610e7e91610fe2565b61016b5780f35b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316803b15610342575f60049160405192838092634c752fe560e11b825234905af1801561033757610ee0575b50610e0e565b610eec91505f90610fe2565b5f5f610eda565b34610342575f3660031901126103425760206108456111df565b34610342575f36600319011261034257602061084561166a565b5f36600319011261034257610f456001600160a01b036100e8611486565b610fbe604051610f56604082610fe2565b601481526101586020820191733937b1b5b2ba20bab1ba34b7b726b0b730b3b2b960611b83526101446030604051809560208201946f636f6e74726163742e6164647265737360801b86525180918484015e81015f838201520301601f198101855284610fe2565b610fc6611146565b005b34610342575f366003190112610342576020610845611019565b601f909101601f19168101906001600160401b0382119082101761100557604052565b634e487b7160e01b5f52604160045260245ffd5b6040516335ee5f8760e01b815260206004820181905260116024830152701c9bd8dad95d11195c1bdcda5d141bdbdb607a1b6044830152816064817f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b03165afa908115610337575f91611091575090565b90506020813d6020116110b8575b816110ac60209383610fe2565b81010312610342575190565b3d915061109f565b156110c757565b60405162461bcd60e51b815260206004820152601c60248201527b125b9d985b1a59081bdc881bdd5d19185d19590818dbdb9d1c9858dd60221b6044820152606490fd5b6040519061111a604083610fe2565b602082527f726f636b657444414f50726f746f636f6c53657474696e67734465706f7369746020830152565b6111946001600160a01b0361115c6101a061110b565b166040513481524260208201527f3a6614e80d02b57255cbb1f8305fbeca53d7e05a4b779d40627919660851292560403392a26115f6565b565b90816020910312610342575180151581036103425790565b604051906111bd604083610fe2565b6013825272726f636b65744d696e69706f6f6c517565756560681b6020830152565b6001600160a01b036111f26101a061110b565b16604051636ada784760e01b8152602081600481855afa908115610337575f9161136c575b501561136757611225611019565b604051637eb6744f60e11b8152602081600481865afa908115610337575f91611335575b50600460208294604051928380926323fd21a560e11b82525afa908115610337575f91611316575b50611292575b508181101561128c5761128991611730565b90565b50505f90565b90915060049060206001600160a01b036112ad6101a06111ae565b166040519384809263e60b40bf60e01b82525afa908115610337575f916112e0575b6112d992506116c5565b905f611277565b90506020823d60201161130e575b816112fb60209383610fe2565b81010312610342576112d99151906112cf565b3d91506112ee565b61132f915060203d602011610552576105448183610fe2565b5f611271565b90506020813d60201161135f575b8161135060209383610fe2565b8101031261034257515f611249565b3d9150611343565b505f90565b611385915060203d602011610552576105448183610fe2565b5f611217565b6040519061139a604083610fe2565b60118252701c9bd8dad95d139bd91951195c1bdcda5d607a1b6020830152565b604051906113c9604083610fe2565b600f82526e0e4dec6d6cae8a8ded6cadca48aa89608b1b6020830152565b600460206001600160a01b036113fe6101a06111ae565b166040519283809263e60b40bf60e01b82525afa908115610337575f91611440575b50611429611019565b908181106114375750505f90565b61128991611730565b90506020813d60201161146a575b8161145b60209383610fe2565b8101031261034257515f611420565b3d915061144e565b51906001600160a01b038216820361034257565b5f546040516321f8a72160e01b81527f65dd923ddfc8d8ae6088f80077201d2403cbd565f0ba25e09841e2799ec90bb26004820152906020908290602490829060081c6001600160a01b03165afa908115610337575f916114e5575090565b90506020813d602011611511575b8161150060209383610fe2565b810103126103425761128990611472565b3d91506114f3565b5f546040516321f8a72160e01b815260048101929092526020908290602490829060081c6001600160a01b03165afa908115610337575f916114e5575090565b6115aa906040516115a26030826020808201956f636f6e74726163742e6164647265737360801b87528051918291018484015e81015f838201520301601f198101835282610fe2565b519020611519565b6001600160a01b038116156115bc5790565b60405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081b9bdd08199bdd5b9960721b6044820152606490fd5b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690813b15610342575f60049260405193848092634c752fe560e11b825234905af1918215610337576116579261165a575b50611789565b50565b5f61166491610fe2565b5f611651565b5f5460405163bd02d0f560e01b8152786465706f7369742e706f6f6c2e6e6f64652e62616c616e636560381b6004820152906020908290602490829060081c6001600160a01b03165afa908115610337575f91611091575090565b9081019081811161171c5781106116d95790565b60405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b9081811161174457810390811161171c5790565b60405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606490fd5b6040516323fd21a560e11b81525f916001600160a01b031690602081600481855afa908115610337575f9161214b575b501561128c576001600160a01b036117d26101a06111ae565b1690604051638ed8045360e01b8152602081600481865afa908115610337575f9161212c575b5015611cdb57600491906001600160a01b036118156101a06122b4565b1661181e611019565b6020869360405196878092633b474a6560e01b82525afa948515611cd0578695611c9c575b506118528594939796956122f9565b926118606040519485610fe2565b848452601f1961186f866122f9565b01865b818110611c455750869283915081805b8882106119fd575b5050505050505090919293806118a4575b50505050600190565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690813b156119f9578491602483926040519485938492631df699e760e11b845260048401525af1801561058b579084916119e0575b505b8281101561189b5760206119198284612310565b510151156119db576001600160a01b036119338284612310565b51511660206119428385612310565b51015190803b156119d7578590600460405180948193634814611360e01b83525af180156104c7579085916119be575b5060019190506001600160a01b0361198a8285612310565b5151165f5160206123605f395f51905f52604060206119a98588612310565b5101518151908152426020820152a201611905565b816119c891610fe2565b6119d357835f611972565b8380fd5b8580fd5b61189b565b816119ea91610fe2565b6119f557825f611903565b8280fd5b8480fd5b8015611b2a575b8015611b16575f19019085158015611b04575b611aff57604051631d33eeb960e31b81529b60208d8c8180611a3c8a60048301612338565b03918a5af19c8d15611af4578b9d611a94575b509088999a9b9c876020611a6f84611a69846001986116c5565b9d612310565b510152611a7c828c612310565b5190838060a01b0316905201909a999897969a611882565b909c506020813d8211611aec575b81611aaf60209383610fe2565b81010312611ae8579088999a9b9c876020611a6f84611a6984611ad3600199611472565b9f5050505050505090919c9b9a99989c611a4f565b8a80fd5b3d9150611aa2565b6040513d8d823e3d90fd5b61188a565b5085611b108d85611730565b10611a17565b634e487b7160e01b8a52601160045260248afd5b50604080516304b5466b60e01b815291955090925082600481865afa8015611c3a5788928991611bf1575b5093826005811015611bdd578015611aff576020611b8791604051809381926304a0030d60e21b835260048301612338565b03818a5afa908115611bd2578a91611ba1575b5094611a04565b90506020813d8211611bca575b81611bbb60209383610fe2565b8101031261034257515f611b9a565b3d9150611bae565b6040513d8c823e3d90fd5b634e487b7160e01b8a52602160045260248afd5b9250506040823d8211611c32575b81611c0c60409383610fe2565b81010312611c2e578151916005831015611c2a57602001515f611b55565b8880fd5b8780fd5b3d9150611bff565b6040513d8a823e3d90fd5b60408051999a9899979896979081016001600160401b03811182821017611c885790602092916040528a81528a8382015282828a01015201989796959498611872565b634e487b7160e01b8b52604160045260248bfd5b9094506020813d602011611cc8575b81611cb860209383610fe2565b810103126103425751935f611843565b3d9150611cab565b6040513d88823e3d90fd5b909290916001600160a01b03611cf26101a06122b4565b169360405193633b474a6560e01b8552602085600481845afa948515610337575f956120f5575b506020600494959660405195868092630d1a7ded60e21b82525afa938415610337575f946120c1575b50611d4d8434612262565b60046020611d6287611d5d611019565b612262565b93604051928380926378cda08360e11b82525afa908115610337575f91612089575b50915f97611d966024938a96956116c5565b91808311612081575b50808211612079575b506040519788938492637e0e497b60e01b845260048401525af1938415610337575f94611fdf575b50835180611de2575b50600193505050565b82611dec916121ed565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690813b15610342575f91602483926040519485938492631df699e760e11b845260048401525af1801561033757611fcc575b5080805b8551821015611f46576001600160a01b03611e678388612310565b5116803b156119d357604051630d0e30db60e41b8152848160048189865af180156104c757908591611f31575b505060206004916040519283809263d2ceebd160e01b82525afa90811561058b578491611eff575b50611ec9906001926116c5565b91818060a01b03611eda8289612310565b51165f5160206123605f395f51905f5260408051888152426020820152a20190611e4c565b90506020813d8211611f29575b81611f1960209383610fe2565b8101031261034257516001611ebc565b3d9150611f0c565b81611f3b91610fe2565b6119d357835f611e94565b8254949550919360081c6001600160a01b0316925050813b156119f557829160448392604051948593849263ebb9d8c960e01b8452786465706f7369742e706f6f6c2e6e6f64652e62616c616e636560381b600485015260248401525af1801561094657611fb7575b808392611dd9565b611fc2828092610fe2565b61016b5780611faf565b611fd891505f90610fe2565b5f5f611e48565b9093503d805f833e611ff18183610fe2565b810190602081830312610342578051906001600160401b03821161034257019080601f83011215610342578151612027816122f9565b926120356040519485610fe2565b81845260208085019260051b82010192831161034257602001905b82821061206157505050925f611dd0565b6020809161206e84611472565b815201910190612050565b90505f611da8565b91505f611d9f565b939290506020843d6020116120b9575b816120a660209383610fe2565b810103126103425792519192915f611d84565b3d9150612099565b9093506020813d6020116120ed575b816120dd60209383610fe2565b810103126103425751925f611d42565b3d91506120d0565b9394506020843d602011612124575b8161211160209383610fe2565b8101031261034257925193926020611d19565b3d9150612104565b612145915060203d602011610552576105448183610fe2565b5f6117f8565b612164915060203d602011610552576105448183610fe2565b5f6117b9565b600160ff1b8110156121795790565b60405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608490fd5b81156121d9570490565b634e487b7160e01b5f52601260045260245ffd5b90811561128c5780820291808304820361171c5761220b90836121cf565b036122135790565b60405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608490fd5b90801561227257611289916121cf565b60405162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b6044820152606490fd5b604051906122c3606083610fe2565b60218252601b60fa1b6040837f726f636b657444414f50726f746f636f6c53657474696e67734d696e69706f6f60208201520152565b6001600160401b0381116110055760051b60200190565b80518210156123245760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b91906020830192600582101561234b5752565b634e487b7160e01b5f52602160045260245ffdfea1811054b7d96716259cff0d366c2f6405951e0efe00c8db3e237cbf77fe7be9546865206465706f73697420706f6f6c2073697a65206166746572206465706f