solc-0.8.36-memorymasking-07 0x4e90495f66fb04a5fba401967abd607e2ea0ab46 optimized
10246 bytes
5f1960805260a0604052348015610014575f5ffd5b506004361061022e575f3560e01c80635c975abb1161012f57806395d89b41116100b9578063c4d66de81161007e578063c4d66de8146104d1578063c87b56dd146104e4578063d890c8e2146104f7578063e985e9c51461050a578063f980f3dc1461051d575f5ffd5b806395d89b411461047d5780639cd3cad614610485578063a140ae2314610498578063a22cb465146104ab578063b88d4fde146104be575f5ffd5b806370a08231116100ff57806370a082311461043f5780638129fc1c146104525780638456cb591461045a5780638bad0c0a146104625780638d2320941461046a575f5ffd5b80635c975abb146103e55780636352211e146103f157806367e971ce14610404578063704802751461042c575f5ffd5b806323b872dd116101bb5780633f4ba83a116101805780633f4ba83a1461039157806342842e0e1461039957806342966c68146103ac5780634f6ccce7146103bf57806355f804b3146103d2575f5ffd5b806323b872dd1461033257806324d7806c14610345578063278d9c411461035857806328db38b41461036b5780632f745c591461037e575f5ffd5b8063095ea7b311610201578063095ea7b3146102c3578063127a5298146102d6578063166c4b05146103045780631785f53c1461031757806318160ddd1461032a575f5ffd5b806301ffc9a71461023257806302c37ddc1461027357806306fdde0314610288578063081812fc1461029d575b5f5ffd5b61025e610240366004611fcd565b6001600160e01b0319165f9081526033602052604090205460ff1690565b60405190151581526020015b60405180910390f35b610286610281366004611fe8565b610530565b005b61029061053d565b60405161026a919061202d565b6102b06102ab366004611fe8565b6105ce565b604051607451909116815260200161026a565b6102866102d1366004612056565b6105fe565b6102f66102e4366004611fe8565b5f90815261013d602052604090205490565b60405190815260200161026a565b61028661031236600461207e565b610639565b61028661032536600461209f565b610668565b609e546102f6565b6102866103403660046120b8565b610696565b61025e61035336600461209f565b6106ca565b61025e6103663660046121bf565b6106dc565b61025e61037936600461207e565b61079e565b6102f661038c366004612056565b6107cc565b610286610815565b6102866103a73660046120b8565b6108cb565b6102866103ba366004611fe8565b6108fa565b6102f66103cd366004611fe8565b610968565b6102866103e036600461226e565b61099f565b6101065460ff1661025e565b6102b06103ff366004611fe8565b6109f5565b610417610412366004612056565b610a10565b6040805192835260208301919091520161026a565b61028661043a36600461209f565b610a38565b6102f661044d36600461209f565b610a66565b610286610a8c565b610286610b37565b610286610bc2565b61028661047836600461229a565b610bcd565b610290610cd0565b61028661049336600461207e565b610ce0565b61025e6104a636600461207e565b610d11565b6102866104b936600461233b565b610d8e565b6102866104cc366004612374565b610dbc565b6102866104df36600461209f565b610df2565b6102906104f2366004611fe8565b610e77565b61025e6105053660046123d9565b610f58565b61025e61051836600461240b565b610fb9565b61025e61052b366004612433565b610fe1565b61053a81336110a0565b50565b6060610139805461054d906124c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610579906124c7565b80156105c45780601f1061059b576101008083540402835291602001916105c4565b820191905f5260205f20905b8154815290600101906020018083116105a757829003601f168201915b5050505050905090565b5f81815260666020526040812054607451166105e8575f5ffd5b505f908152606760205260409020546074511690565b6101065460ff161561062b5760405162461bcd60e51b8152600401610622906124ff565b60405180910390fd5b61063582826110eb565b5050565b610642336106ca565b61065e5760405162461bcd60e51b81526004016106229061252b565b61063582826110a0565b610671336106ca565b61068d5760405162461bcd60e51b81526004016106229061252b565b61053a8161117f565b6101065460ff16156106ba5760405162461bcd60e51b8152600401610622906124ff565b6106c58383836111bb565b505050565b5f6106d660d2836111d8565b92915050565b610106545f9060ff16156107025760405162461bcd60e51b8152600401610622906124ff565b8261070d813361079e565b6107295760405162461bcd60e51b815260040161062290612558565b5f5b835181101561077b57610772858261013c54600161074991906125a3565b61075391906125a3565b868481518110610765576107656125b6565b6020026020010151611200565b5060010161072b565b50825161013c5f82825461078f91906125a3565b90915550600195945050505050565b5f6107a8826106ca565b806107c557505f83815260d3602052604090206107c590836111d8565b9392505050565b5f6107d683610a66565b82106107e0575f5ffd5b60745183165f908152609c60205260409020805483908110610804576108046125b6565b905f5260205f200154905092915050565b61081e336106ca565b61083a5760405162461bcd60e51b81526004016106229061252b565b6101065460ff166108865760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd0814185d5cd95960521b6044820152606401610622565b610106805460ff19169055604051607451331681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6101065460ff16156108ef5760405162461bcd60e51b8152600401610622906124ff565b6106c5838383611260565b610904338261127a565b806109135750610913336106ca565b61095f5760405162461bcd60e51b815260206004820152601e60248201527f53656e64657220646f65736e27742068617665207065726d697373696f6e00006044820152606401610622565b61053a816112bc565b5f610972609e5490565b821061097c575f5ffd5b609e828154811061098f5761098f6125b6565b905f5260205f2001549050919050565b6109a8336106ca565b6109c45760405162461bcd60e51b81526004016106229061252b565b6101065460ff16156109e85760405162461bcd60e51b8152600401610622906124ff565b61013b6106358282612620565b5f8181526066602052604081205460745116806106d6575f5ffd5b5f5f610a1c84846107cc565b5f81815261013d60205260409020549092505b90509250929050565b610a41336106ca565b610a5d5760405162461bcd60e51b81526004016106229061252b565b61053a816112ce565b5f6074518216610a74575f5ffd5b60745182165f908152606860205260409020546106d6565b5f54610100900460ff1680610aa05750303b155b80610aad57505f5460ff16155b610ac95760405162461bcd60e51b8152600401610622906126d9565b5f805461ffff1981166101011790915560405162461bcd60e51b815260206004820152602360248201527f506f61703a2075736520706172616d65746572697a656420696e697469616c696044820152623d32b960e91b606482015261010090910460ff1690608401610622565b610b40336106ca565b610b5c5760405162461bcd60e51b81526004016106229061252b565b6101065460ff1615610b805760405162461bcd60e51b8152600401610622906124ff565b610106805460ff19166001179055604051607451331681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016108c1565b610bcb3361117f565b565b5f54610100900460ff1680610be15750303b155b80610bee57505f5460ff16155b610c0a5760405162461bcd60e51b8152600401610622906126d9565b5f805461ffff19811661010117909155610100900460ff16610c2a61130a565b610c32611390565b610c3b33610df2565b610c43611437565b5f5b8251811015610c7857610c70838281518110610c6357610c636125b6565b60200260200101516112ce565b600101610c45565b50610139610c868682612620565b5061013a610c948582612620565b5061013b610ca28482612620565b50610cb3635b5e139f60e01b61149f565b5f80549115156101000261ff001990921691909117905550505050565b606061013a805461054d906124c7565b81610ceb813361079e565b610d075760405162461bcd60e51b815260040161062290612558565b6106c583836114d9565b610106545f9060ff1615610d375760405162461bcd60e51b8152600401610622906124ff565b82610d42813361079e565b610d5e5760405162461bcd60e51b815260040161062290612558565b600161013c5f828254610d7191906125a3565b92505081905550610d868461013c5485611200565b949350505050565b6101065460ff1615610db25760405162461bcd60e51b8152600401610622906124ff565b6106358282611524565b6101065460ff1615610de05760405162461bcd60e51b8152600401610622906124ff565b610dec84848484611599565b50505050565b5f54610100900460ff1680610e065750303b155b80610e1357505f5460ff16155b610e2f5760405162461bcd60e51b8152600401610622906126d9565b5f805461ffff19811661010117909155610100900460ff16610e50826106ca565b610e5d57610e5d826112ce565b5f80549115156101000261ff001990921691909117905550565b5f81815261013d602052604090205461013b8054606092916107c591610e9c906124c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906124c7565b8015610f135780601f10610eea57610100808354040283529160200191610f13565b820191905f5260205f20905b815481529060010190602001808311610ef657829003601f168201915b5050505050610f21836115b8565b604051806040016040528060018152602001602f60f81b815250610f44876115b8565b60405180602001604052805f8152506116bf565b610106545f9060ff1615610f7e5760405162461bcd60e51b8152600401610622906124ff565b83610f89813361079e565b610fa55760405162461bcd60e51b815260040161062290612558565b610fb0858585611200565b95945050505050565b6074519182165f90815260696020908152604080832093909416825291909152205460ff1690565b610106545f9060ff16156110075760405162461bcd60e51b8152600401610622906124ff565b611010336106ca565b61102c5760405162461bcd60e51b81526004016106229061252b565b5f5b835181101561107e5761107584828151811061104c5761104c6125b6565b60200260200101518261013c54600161106591906125a3565b61106f91906125a3565b85611200565b5060010161102e565b50825161013c5f82825461109291906125a3565b909155506001949350505050565b5f82815260d3602052604090206110b79082611948565b60405160745182169083907fb6882c4d609d560f6d57e78e73dd96027f0d9852739b0b922537a6dd3c8e944c905f90a35050565b5f6110f5826109f5565b9050806074511683607451160361110a575f5ffd5b336074518216148061112157506111218133610fb9565b611129575f5ffd5b5f8281526067602052604080822080546001600160a01b03191660745187811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61118a60d282611948565b6040516074518216907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f905f90a250565b6111c5338261127a565b6111cd575f5ffd5b6106c5838383611983565b5f60745182166111e6575f5ffd5b50607451165f908152602091909152604090205460ff1690565b5f61120b82846119a2565b5f83815261013d602090815260409182902086905581518681529081018590527f4b3711cd7ece062b0828c1b6e08d814a72d4c003383a016c833cbb1b45956e34910160405180910390a15060019392505050565b6106c583838360405180602001604052805f815250610dbc565b5f5f611285836109f5565b90508060745116846074511614806112ac575083607451166112a6846105ce565b60745116145b80610d865750610d868185610fb9565b61053a6112c8826109f5565b826119fd565b6112d960d282611a19565b6040516074518216907f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339905f90a250565b5f54610100900460ff168061131e5750303b155b8061132b57505f5460ff16155b6113475760405162461bcd60e51b8152600401610622906126d9565b5f805461ffff19811661010117909155610100900460ff16611367611a58565b6113776380ac58cd60e01b61149f565b5f80549115156101000261ff0019909216919091179055565b5f54610100900460ff16806113a45750303b155b806113b157505f5460ff16155b6113cd5760405162461bcd60e51b8152600401610622906126d9565b5f805461ffff19811661010117909155610100900460ff1661141f6380ac58cd60e01b5f5260336020527fe940c21e8a07a63a671103a94dc940004f6cc2e4962299c5f9e061f0d862c93b5460ff1690565b611427575f5ffd5b61137763780e9d6360e01b61149f565b5f54610100900460ff168061144b5750303b155b8061145857505f5460ff16155b6114745760405162461bcd60e51b8152600401610622906126d9565b5f8054610106805460ff1916905561ffff1981166101009182900460ff161515909102176001179055565b6001600160e01b031980821690036114b5575f5ffd5b6001600160e01b0319165f908152603360205260409020805460ff19166001179055565b5f82815260d3602052604090206114f09082611a19565b60405160745182169083907fe1bd660d9f7c60e6fb12dd6479fdde12d21fc96385dc7b9b022c0b2f319e7391905f90a35050565b33607451831603611533575f5ffd5b335f818152606960209081526040808320607451871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6115a4848484610696565b6115b084848484611abd565b610dec575f5ffd5b6060815f036115de5750506040805180820190915260018152600360fc1b602082015290565b815f5b811561160757806115f181612727565b91506116009050600a83612753565b91506115e1565b5f8160685181111561161b5761161b6120f2565b6040519080825280601f01601f191660200182016040528015611645576020820181803683370190505b5090505f611654600184612766565b90505b85156116b657611668600a87612779565b6116739060306125a3565b60f81b82826116818161278c565b935081518110611693576116936125b6565b6020010190607f51191690815f1a9053506116af600a87612753565b9550611657565b50949350505050565b805182518451865188516060948a948a948a948a948a945f949093909290916116e891906125a3565b6116f291906125a3565b6116fc91906125a3565b61170691906125a3565b606851811115611718576117186120f2565b6040519080825280601f01601f191660200182016040528015611742576020820181803683370190505b509050805f805b88518110156117a957888181518110611764576117646125b6565b01602001516001600160f81b031916838361177e81612727565b945081518110611790576117906125b6565b6020010190607f51191690815f1a905350600101611749565b505f5b875181101561180c578781815181106117c7576117c76125b6565b01602001516001600160f81b03191683836117e181612727565b9450815181106117f3576117f36125b6565b6020010190607f51191690815f1a9053506001016117ac565b505f5b865181101561186f5786818151811061182a5761182a6125b6565b01602001516001600160f81b031916838361184481612727565b945081518110611856576118566125b6565b6020010190607f51191690815f1a90535060010161180f565b505f5b85518110156118d25785818151811061188d5761188d6125b6565b01602001516001600160f81b03191683836118a781612727565b9450815181106118b9576118b96125b6565b6020010190607f51191690815f1a905350600101611872565b505f5b8451811015611935578481815181106118f0576118f06125b6565b01602001516001600160f81b031916838361190a81612727565b94508151811061191c5761191c6125b6565b6020010190607f51191690815f1a9053506001016118d5565b50909d9c50505050505050505050505050565b6074518116611955575f5ffd5b61195f82826111d8565b611967575f5ffd5b607451165f90815260209190915260409020805460ff19169055565b61198e838383611b5d565b6119988382611c1a565b6106c58282611d03565b6119ac8282611d3b565b6119b68282611d03565b61063581609e80545f838152609f60205260408120829055600182018355919091527fcfe2a20ff701a1f3e14f63bd70d6c6bc6fba8172ec6d5a505cdab3927c0a9de60155565b611a078282611dd2565b5f90815261013d602052604081205550565b6074518116611a26575f5ffd5b611a3082826111d8565b15611a39575f5ffd5b607451165f90815260209190915260409020805460ff19166001179055565b5f54610100900460ff1680611a6c5750303b155b80611a7957505f5460ff16155b611a955760405162461bcd60e51b8152600401610622906126d9565b5f805461ffff19811661010117909155610100900460ff166113776301ffc9a760e01b61149f565b5f60745184163b611ad057506001610d86565b604051630a85bd0160e11b81525f9060745186169063150b7a0290611aff9033908a90899089906004016127a1565b6020604051808303815f875af1158015611b1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3f91906127d7565b6001600160e01b031916630a85bd0160e11b14915050949350505050565b8260745116611b6b826109f5565b6074511614611b78575f5ffd5b6074518216611b85575f5ffd5b611b8e81611dfd565b60745183165f908152606860205260409020611ba990611e31565b60745182165f908152606860205260409020611bc490611e42565b5f8181526066602052604080822080546001600160a01b03191660745186811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60745182165f908152609c6020526040812054611c38906001611e5d565b5f838152609d6020526040902054909150808214611cc95760745184165f908152609c60205260408120805484908110611c7457611c746125b6565b905f5260205f200154905080609c5f87607451166074511681526020019081526020015f208381548110611caa57611caa6125b6565b5f918252602080832090910192909255918252609d9052604090208190555b60745184165f908152609c60205260409020805480611cea57611cea6127f2565b600190038181905f5260205f20015f9055905550505050565b6074519091165f908152609c602081815260408084208054868652609d84529185208290559282526001810183559183529091200155565b6074518216611d48575f5ffd5b5f818152606660205260409020546074511615611d63575f5ffd5b5f81815260666020908152604080832080546001600160a01b0319166074518716908117909155835260689091529020611d9c90611e42565b60405181906074518416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611ddc8282611e75565b611de68282611c1a565b5f818152609d602052604081205561063581611f03565b5f81815260676020526040902054607451161561053a575f90815260676020526040902080546001600160a01b0319169055565b8054611e3e906001611e5d565b9055565b6001815f015f828254611e5591906125a3565b909155505050565b5f82821115611e6a575f5ffd5b5f610d868385612766565b8160745116611e83826109f5565b6074511614611e90575f5ffd5b611e9981611dfd565b60745182165f908152606860205260409020611eb490611e31565b5f8181526066602052604080822080546001600160a01b0319169055518291906074518516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b609e545f90611f13906001611e5d565b5f838152609f6020526040812054609e8054939450909284908110611f3a57611f3a6125b6565b905f5260205f200154905080609e8381548110611f5957611f596125b6565b5f918252602080832090910192909255828152609f90915260409020829055609e805480611f8957611f896127f2565b600190038181905f5260205f20015f905590555f609f5f8681526020019081526020015f208190555050505050565b6001600160e01b03198116811461053a575f5ffd5b5f60208284031215611fdd575f5ffd5b81356107c581611fb8565b5f60208284031215611ff8575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107c56020830184611fff565b60745181359081168114612051575f5ffd5b919050565b5f5f60408385031215612067575f5ffd5b6120708361203f565b946020939093013593505050565b5f5f6040838503121561208f575f5ffd5b82359150610a2f6020840161203f565b5f602082840312156120af575f5ffd5b6107c58261203f565b5f5f5f606084860312156120ca575f5ffd5b6120d38461203f565b92506120e16020850161203f565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810160685181118282101715612129576121296120f2565b604052919050565b5f606851821115612144576121446120f2565b5060051b60200190565b5f82601f83011261215d575f5ffd5b813561217061216b82612131565b612106565b8082825260208201915060208360051b860101925085831115612191575f5ffd5b602085015b838110156121b5576121a78161203f565b835260209283019201612196565b5095945050505050565b5f5f604083850312156121d0575f5ffd5b8235915060208301356068518111156121e7575f5ffd5b6121f38582860161214e565b9150509250929050565b5f5f606851841115612211576122116120f2565b50601f8301601f191660200161222681612106565b91505082815283838301111561223a575f5ffd5b828260208301375f602084830101529392505050565b5f82601f83011261225f575f5ffd5b6107c5838335602085016121fd565b5f6020828403121561227e575f5ffd5b813560685181111561228e575f5ffd5b610d8684828501612250565b5f5f5f5f608085870312156122ad575f5ffd5b84356068518111156122bd575f5ffd5b6122c987828801612250565b94505060208501356068518111156122df575f5ffd5b6122eb87828801612250565b9350506040850135606851811115612301575f5ffd5b61230d87828801612250565b9250506060850135606851811115612323575f5ffd5b61232f8782880161214e565b91505092959194509250565b5f5f6040838503121561234c575f5ffd5b6123558361203f565b915060208301358015158114612369575f5ffd5b809150509250929050565b5f5f5f5f60808587031215612387575f5ffd5b6123908561203f565b935061239e6020860161203f565b92506040850135915060608501356068518111156123ba575f5ffd5b8501601f810187136123ca575f5ffd5b61232f878235602084016121fd565b5f5f5f606084860312156123eb575f5ffd5b83359250602084013591506124026040850161203f565b90509250925092565b5f5f6040838503121561241c575f5ffd5b6124258361203f565b9150610a2f6020840161203f565b5f5f60408385031215612444575f5ffd5b8235606851811115612454575f5ffd5b8301601f81018513612464575f5ffd5b803561247261216b82612131565b8082825260208201915060208360051b850101925087831115612493575f5ffd5b6020840193505b828410156124b557833582526020938401939091019061249a565b9450610a2f925050506020840161203f565b600181811c908216806124db57607f821691505b6020821081036124f957634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526012908201527110dbdb9d1c9858dd081a5cc814185d5cd95960721b604082015260600190565b60208082526013908201527229b2b73232b91034b9903737ba1020b236b4b760691b604082015260600190565b6020808252601a908201527f53656e646572206973206e6f74204576656e74204d696e746572000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106d6576106d661258f565b634e487b7160e01b5f52603260045260245ffd5b601f8211156106c557828211156106c557805f5260205f20601f840160051c60208510156125f557505f5b90810190601f840160051c035f5b81811015612618575f83820155600101612603565b505050505050565b8151606851811115612634576126346120f2565b6126488161264284546124c7565b846125ca565b6020601f82116001811461267a575f83156126635750848201515b5f19600385901b1c1916600184901b1784556126d2565b5f84815260208120601f198516915b828110156126a95787850151825560209485019460019092019101612689565b50848210156126c657868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b5f600182016127385761273861258f565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f826127615761276161273f565b500490565b818103818111156106d6576106d661258f565b5f826127875761278761273f565b500690565b5f8161279a5761279a61258f565b505f190190565b6074518516815260745184166020820152826040820152608060608201525f6127cd6080830184611fff565b9695505050505050565b5f602082840312156127e7575f5ffd5b81516107c581611fb8565b634e487b7160e01b5f52603160045260245ffd