solc-0.8.36-maskbitsopcode-02 0x4e90495f66fb04a5fba401967abd607e2ea0ab46 via-ir-high-runs

10867 bytes

60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a714611e2c57806302c37ddc14611e0f57806306fdde0314611d68578063081812fc14611d4a578063095ea7b314611c8e578063127a529814611c63578063166c4b0514611c335780631785f53c14611c0657806318160ddd14611be957806323b872dd14611b0c57806324d7806c14611ae9578063278d9c4114611a4357806328db38b414611a1d5780632f745c59146119ff5780633f4ba83a1461194057806342842e0e1461190257806342966c68146116f35780634f6ccce7146116bb57806355f804b3146115205780635c975abb146114fd5780636352211e146114d457806367e971ce14611494578063704802751461146757806370a082311461143c5780638129fc1c146113715780638456cb591461130a5780638bad0c0a146112ef5780638d23209414610ae657806395d89b4114610a055780639cd3cad614610972578063a140ae2314610917578063a22cb4651461087a578063b88d4fde1461073a578063c4d66de81461068a578063c87b56dd1461039f578063d890c8e214610342578063e985e9c5146102f85763f980f3dc146101bb575f80fd5b346102f45760406003193601126102f45760043567ffffffffffffffff81116102f457366023820112156102f4578060040135906101f882611eed565b916102066040519384611eca565b8083526024602084019160051b830101913683116102f457602401905b8282106102e45783610233611e8c565b9061024460ff610106541615612066565b61025561025033612486565b6120cb565b5f5b81518110156102c75761026a81836121a2565b519061013c54916001830180931161029a57846102939161028d84600196612195565b906124cc565b5001610257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6102d5825161013c54612195565b61013c55602060405160018152f35b8135815260209182019101610223565b5f80fd5b346102f45760406003193601126102f457602060ff610336610318611e7c565b610320611e8c565b9060601f60601f5f526069845260405f2061220e565b54166040519015158152f35b346102f45760606003193601126102f4576044356004358160601f82036102f4576020916103959161037a60ff610106541615612066565b61038c61038733836121e3565b612130565b602435906124cc565b6040519015158152f35b346102f45760206003193601126102f457600435805f5261013d6020526103d26103cc60405f2054612704565b91612704565b906040515f8161013b54916103e683611ff5565b808352926001811690811561066a575060011461060a575b61040a92500382611eca565b60409081519361041a8386611eca565b600185527f2f000000000000000000000000000000000000000000000000000000000000006020860152825193610452602086611eca565b5f855261048361047b61047361046b8651855190612195565b895190612195565b845190612195565b865190612195565b93601f196104a861049387611f6d565b966104a084519889611eca565b808852611f6d565b013660208701375f965f5b85518110156104ed57806104c9600192886126f3565b5162f8f8f81f996104e66104dc826126d7565b9b5f1a918a6126f3565b53016104b3565b5091935091945f5b845181101561052f578061050b600192876126f3565b5162f8f8f81f9861052861051e826126d7565b9a5f1a91896126f3565b53016104f5565b5091949092505f5b8351811015610571578061054d600192866126f3565b5162f8f8f81f9761056a610560826126d7565b995f1a91886126f3565b5301610537565b509150925f5b82518110156105b1578061058d600192856126f3565b5162f8f8f81f966105aa6105a0826126d7565b985f1a91876126f3565b5301610577565b509290505f5b81518110156105f157806105cd600192846126f3565b5162f8f8f81f956105ea6105e0826126d7565b975f1a91866126f3565b53016105b7565b83516020808252819061060690820186611e57565b0390f35b5061013b5f90815290917fe1abe72d20e3d8bbb0a91fbb1c3cdd65253a0a0af97f17849f67ad7b3d1a6a625b81831061064e57505090602061040a928201016103fe565b6020919350806001915483858801015201910190918392610636565b6020925061040a949150620808081f82840152151560051b8201016103fe565b346102f45760206003193601126102f4576106a3611e7c565b5f54906101017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000060ff8460081c169384159485610731575b8015610726575b6106eb906122c7565b16175f556106f881612486565b15610717575b5061ff001961ff005f54921560081b169116175f555f80f35b61072090612627565b816106fe565b5060ff8116156106e2565b50303b156106db565b346102f45760806003193601126102f457610753611e7c565b61075b611e8c565b60443560643567ffffffffffffffff81116102f457366023820112156102f45761078f903690602481600401359101611f8a565b916107a960ff6101065416156107a481612066565b612066565b6107b382336125cb565b156102f4576107c182612283565b938060601f809560601f036102f4578160601f945f60601f60601f86146102f4576108739584916107f183612a11565b60601f90815f52606860205261080960405f20612a4b565b60601f90815f52606860205261082160405f20612a62565b825f5260666020526108368560405f206123da565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46108648382612910565b61086e83836129bc565b612804565b156102f457005b346102f45760406003193601126102f457610893611e7c565b602435908115158092036102f4576108b160ff610106541615612066565b3360601f8160601f908082146102f4577f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31916108fd60209260601f94855f526069845260405f2061220e565b60ff1981541660ff871617905560405194855260601f93a3005b346102f45760406003193601126102f457600435610933611e8c565b9061094460ff610106541615612066565b61095161038733836121e3565b61013c54916001830180931161029a57826103959260209461013c556124cc565b346102f45760406003193601126102f45760043561098e611e8c565b61099b61038733846121e3565b815f5260d360205260405f208160601f915f60601f60601f83146102f4576109c381836124ab565b6102f4576109d09161220e565b600160ff1982541617905560601f907fe1bd660d9f7c60e6fb12dd6479fdde12d21fc96385dc7b9b022c0b2f319e73915f80a3005b346102f4575f6003193601126102f4576040515f61013a54610a2681611ff5565b8084529060018116908115610ac15750600114610a62575b61060683610a4e81850382611eca565b604051918291602083526020830190611e57565b61013a5f9081527f1cc3277f886bc7650038e458160d07e0113c6dbe808de6ada3226131dc580251939250905b808210610aa757509091508101602001610a4e610a3e565b919260018160209254838588010152019101909291610a8f565b620808081f60208086019190915291151560051b84019091019150610a4e9050610a3e565b346102f45760806003193601126102f45760043567ffffffffffffffff81116102f457610b17903690600401611fc0565b60243567ffffffffffffffff81116102f457610b37903690600401611fc0565b9060443567ffffffffffffffff81116102f457610b58903690600401611fc0565b9060643567ffffffffffffffff81116102f457610b79903690600401611f05565b925f549261ff00196101017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000060ff8760081c1696871597886112e6575b80156112db575b610bc6906122c7565b161760ff8160081c1690818015928391826112d2575b80156112cb575b610bec906122c7565b906112c2575b80156112bb575b610c02906122c7565b5f55610c327f01ffc9a70000000000000000000000000000000000000000000000000000000062e0e0e01f61268e565b61ff005f54911560081b1691829116175f55610cd07f80ac58cd0000000000000000000000000000000000000000000000000000000062e0e0e01f610c768161268e565b60016101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000060ff5f549661ff001988161760081c1695861596876112b2575b80156112a7575b610cc6906122c7565b1617175f55611fde565b156102f457600190610d067f780e9d630000000000000000000000000000000000000000000000000000000062e0e0e01f61268e565b816101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000060ff61ff005f54951560081b1661ff001986161760081c16938415948561129e575b8015611293575b610d5d906122c7565b1617175f55610d6b33612486565b15611285575b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ff0060ff818454951560081b1661ff001986161760081c168015908161127c575b8015611271575b610dc5906122c7565b60ff196101065416610106551560081b1692161717175f555f5b8551811015610e075780610e01610df8600193896121a2565b5160601f612627565b01610ddf565b5083835167ffffffffffffffff811161104a57610e2661013954611ff5565b601f8111611202575b50602094601f821160011461117f579481929394955f92611174575b50505f198260011b9260031b1c191617610139555b825167ffffffffffffffff811161104a57610e7d61013a54611ff5565b601f8111611105575b506020601f821160011461108257819293945f92611077575b50505f198260011b9260031b1c19161761013a555b815167ffffffffffffffff811161104a57610ed161013b54611ff5565b601f8111610fdb575b50602092601f8211600114610f5a57928192935f92610f4f575b50505f198260011b9260031b1c19161761013b555b610f377f5b5e139f0000000000000000000000000000000000000000000000000000000062e0e0e01f61268e565b61ff001961ff005f54921560081b169116175f555f80f35b015190508380610ef4565b601f1982169361013b5f527fe1abe72d20e3d8bbb0a91fbb1c3cdd65253a0a0af97f17849f67ad7b3d1a6a62915f5b868110610fc35750836001959610610fab575b505050811b0161013b55610f09565b01515f1960f88460031b161c19169055838080610f9c565b91926020600181928685015181550194019201610f89565b81811115610eda5761013b5f52601f820160051c9060208310611042575b601f82910160051c03905f5b828110611013575050610eda565b5f8282017fe1abe72d20e3d8bbb0a91fbb1c3cdd65253a0a0af97f17849f67ad7b3d1a6a620155600101611005565b5f9150610ff9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508480610e9f565b601f1982169061013a5f527f1cc3277f886bc7650038e458160d07e0113c6dbe808de6ada3226131dc580251915f5b8181106110ed575095836001959697106110d5575b505050811b0161013a55610eb4565b01515f1960f88460031b161c191690558480806110c6565b9192602060018192868b0151815501940192016110b1565b81811115610e865761013a5f52601f820160051c906020831061116c575b601f82910160051c03905f5b82811061113d575050610e86565b5f8282017f1cc3277f886bc7650038e458160d07e0113c6dbe808de6ada3226131dc580251015560010161112f565b5f9150611123565b015190508580610e4b565b601f198216956101395f527f22d66071756d4d57920b8322c1a903a27bd75b44065e925d5f9f1c08908d28f6915f5b8881106111ea575083600195969798106111d2575b505050811b0161013955610e60565b01515f1960f88460031b161c191690558580806111c3565b919260206001819286850151815501940192016111ae565b81811115610e2f576101395f52601f820160051c9060208310611269575b601f82910160051c03905f5b82811061123a575050610e2f565b5f8282017f22d66071756d4d57920b8322c1a903a27bd75b44065e925d5f9f1c08908d28f6015560010161122c565b5f9150611220565b5060ff851615610dbc565b50303b15610db5565b61128e33612627565b610d71565b5060ff811615610d54565b50303b15610d4d565b5060ff811615610cbd565b50303b15610cb6565b505f610bf9565b50303b15610bf2565b505f610be3565b50303b15610bdc565b5060ff811615610bbd565b50303b15610bb6565b346102f4575f6003193601126102f45761130833612421565b005b346102f4575f6003193601126102f45761132661025033612486565b600160ff196101065461133c60ff821615612066565b1617610106557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25860206040513360601f8152a1005b346102f4575f6003193601126102f4576113a25f5460ff8160081c16908115611432575b8115611426575b506122c7565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f506f61703a2075736520706172616d65746572697a656420696e697469616c6960448201527f7a657200000000000000000000000000000000000000000000000000000000006064820152fd5b60ff915016158261139c565b303b159150611395565b346102f45760206003193601126102f457602061145f61145a611e7c565b6122a5565b604051908152f35b346102f45760206003193601126102f457611308611483611e7c565b61148f61025033612486565b612627565b346102f45760406003193601126102f45760406114bb6114b2611e7c565b6024359061224e565b805f5261013d602052815f205482519182526020820152f35b346102f45760206003193601126102f45760206114f2600435612283565b6040519060601f8152f35b346102f4575f6003193601126102f457602060ff61010654166040519015158152f35b346102f45760206003193601126102f45760043567ffffffffffffffff81116102f457611551903690600401611fc0565b61155d61025033612486565b61156d60ff610106541615612066565b805167ffffffffffffffff811161104a5761158a61013b54611ff5565b601f811161164c575b50602091601f82116001146115cf579181925f926115c4575b50505f198260011b9260031b1c19161761013b555f80f35b0151905082806115ac565b601f1982169261013b5f527fe1abe72d20e3d8bbb0a91fbb1c3cdd65253a0a0af97f17849f67ad7b3d1a6a62915f5b8581106116345750836001951061161c575b505050811b0161013b55005b01515f1960f88460031b161c19169055828080611610565b919260206001819286850151815501940192016115fe565b818111156115935761013b5f52601f820160051c90602083106116b3575b601f82910160051c03905f5b828110611684575050611593565b5f8282017fe1abe72d20e3d8bbb0a91fbb1c3cdd65253a0a0af97f17849f67ad7b3d1a6a620155600101611676565b5f915061166a565b346102f45760206003193601126102f457600435609e548110156102f4576116e4602091612221565b90549060031b1c604051908152f35b346102f45760206003193601126102f45760043561171181336125cb565b80156118f3575b156118955761172681612283565b61172f82612283565b8160601f809160601f036102f4576117ad9183809261174d82612a11565b60601f805f52606860205261176460405f20612a4b565b5f60601f825f52606660205261177d8160405f206123da565b60601f60601f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4612910565b805f52609d6020525f6040812055609e54806001116102f4576117cf906126e5565b815f52609f6020526117e560405f205491612221565b90549060031b1c611810816117f984612221565b9091905f1983549160031b92831b921b1916179055565b5f52609f60205260405f2055609e548015611868575f190161184561183682609e612239565b5f1982549160031b1b19169055565b609e55805f52609f6020525f60408120555f5261013d6020525f60408120555f80f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f53656e64657220646f65736e27742068617665207065726d697373696f6e00006044820152fd5b506118fd33612486565b611718565b346102f45761191036611e9c565b60ff6101065416159161192283612066565b6107a960405193611934602086611eca565b5f85526107a481612066565b346102f4575f6003193601126102f45761195c61025033612486565b6101065460ff8116156119a157620808081f610106557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa60206040513360601f8152a1005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f436f6e7472616374206973206e6f7420506175736564000000000000000000006044820152fd5b346102f45760406003193601126102f457602061145f6114b2611e7c565b346102f45760406003193601126102f4576020610395611a3b611e8c565b6004356121e3565b346102f45760406003193601126102f45760043560243567ffffffffffffffff81116102f457611a77903690600401611f05565b90611a8860ff610106541615612066565b611a9561038733836121e3565b5f5b8251811015611adb5761013c54906001820180921161029a57611ad4611abf82600194612195565b611ac983876121a2565b5160601f90856124cc565b5001611a97565b6102d5835161013c54612195565b346102f45760206003193601126102f4576020610395611b07611e7c565b612486565b346102f457611b1a36611e9c565b90611b2b60ff610106541615612066565b611b3582336125cb565b156102f457611b4382612283565b8360601f809160601f036102f4578160601f5f60601f60601f81146102f45761130894848092611be494611b7683612a11565b60601f90815f526068602052611b8e60405f20612a4b565b60601f90815f526068602052611ba660405f20612a62565b825f526066602052611bbb8760405f206123da565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4612910565b6129bc565b346102f4575f6003193601126102f4576020609e54604051908152f35b346102f45760206003193601126102f457611308611c22611e7c565b611c2e61025033612486565b612421565b346102f45760406003193601126102f457611308611c4f611e8c565b611c5b61025033612486565b600435612352565b346102f45760206003193601126102f4576004355f5261013d602052602060405f2054604051908152f35b346102f45760406003193601126102f457611ca7611e7c565b60243590611cbb60ff610106541615612066565b611cc482612283565b60601f908060601f908282146102f457823360601f148015611d28575b156102f457611cfb90845f52606760205260405f206123da565b60601f9060601f7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b508260601f5f52606960205260ff611d433360405f2061220e565b5416611ce1565b346102f45760206003193601126102f45760206114f2600435612046565b346102f4575f6003193601126102f4576040515f61013954611d8981611ff5565b8084529060018116908115610ac15750600114611db05761060683610a4e81850382611eca565b6101395f9081527f22d66071756d4d57920b8322c1a903a27bd75b44065e925d5f9f1c08908d28f6939250905b808210611df557509091508101602001610a4e610a3e565b919260018160209254838588010152019101909291611ddd565b346102f45760206003193601126102f45761130833600435612352565b346102f45760206003193601126102f4576004358062e0e0e01f81036102f457610395602091611fde565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b600435908160601f82036102f457565b602435908160601f82036102f457565b60031960609101126102f4576004358060601f81036102f457906024358060601f81036102f4579060443590565b90601f601f19910116810190811067ffffffffffffffff82111761104a57604052565b67ffffffffffffffff811161104a5760051b60200190565b9080601f830112156102f457813590611f1d82611eed565b92611f2b6040519485611eca565b82845260208085019360051b8201019182116102f457602001915b818310611f535750505090565b82358060601f81036102f457815260209283019201611f46565b67ffffffffffffffff811161104a57601f01620505051f60200190565b929192611f9682611f6d565b91611fa46040519384611eca565b8294818452818301116102f4578281602093845f960137010152565b9080601f830112156102f457816020611fdb93359101611f8a565b90565b62e0e0e01f5f52603360205260ff60405f20541690565b90600182811c9216801561203c575b602083101461200f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612004565b61204f816123bb565b156102f4575f52606760205260405f205460601f90565b1561206d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f436f6e74726163742069732050617573656400000000000000000000000000006044820152fd5b156120d257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f53656e646572206973206e6f742041646d696e000000000000000000000000006044820152fd5b1561213757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f53656e646572206973206e6f74204576656e74204d696e7465720000000000006044820152fd5b9190820180921161029a57565b80518210156121b65760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b906121ed81612486565b9182156121f957505090565b611fdb92505f5260d360205260405f206124ab565b9060601f60601f5f5260205260405f2090565b609e548110156121b657609e5f5260205f2001905f90565b80548210156121b6575f5260205f2001905f90565b90612258826122a5565b8110156102f4576122799160601f60601f5f52609c60205260405f20612239565b90549060031b1c90565b5f52606660205260405f205460601f5f60601f60601f8160601f146102f45790565b60601f5f60601f60601f81146102f45760601f5f52606860205260405f205490565b156122ce57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a65640000000000000000000000000000000000006064820152fd5b90815f5260d360205260405f208160601f915f60601f60601f83146102f45761237b81836124ab565b156102f4576123899161220e565b60ff19815416905560601f907fb6882c4d609d560f6d57e78e73dd96027f0d9852739b0b922537a6dd3c8e944c5f80a3565b5f52606660205260405f205460601f5f60601f60601f9060601f141590565b9073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000008354169160601f60601f16179055565b60601f5f60601f60601f81146102f4578060601f5f5260d260205260ff60405f205416156102f45760601f805f5260d260205260405f2060ff1981541690557fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f5f80a2565b60601f5f60601f60601f81146102f45760601f5f5260d260205260ff60405f20541690565b5f60601f60601f8260601f146102f45760ff916124c79161220e565b541690565b90915f60601f60601f8160601f918183146102f4576124ea856123bb565b6102f45784809261254e94825f52606660205261250a8460405f206123da565b60601f90815f52606860205261252260405f20612a62565b60601f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46129bc565b609e54825f52609f60205260405f2055609e54906801000000000000000082101561104a57826125ad7f4b3711cd7ece062b0828c1b6e08d814a72d4c003383a016c833cbb1b45956e34946117f985600160409701609e55609e612239565b805f5261013d60205281835f205582519182526020820152a1600190565b6125d482612283565b60601f8160601f81811493841561260f575b505082156125f357505090565b60ff9250906124c79160601f5f52606960205260405f2061220e565b61261b91929450612046565b60601f14915f806125e6565b60601f5f60601f60601f81146102f4578060601f5f5260d260205260ff60405f2054166102f45760601f805f5260d260205260405f20600160ff198254161790557f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3395f80a2565b62e0e0e01f7fffffffff0000000000000000000000000000000000000000000000000000000062e0e0e01f81146102f4575f52603360205260405f20600160ff19825416179055565b5f19811461029a5760010190565b905f19820191821161029a57565b9081518110156121b6570160200190565b80156127c85780815f925b6127b4575061271d82611f6d565b9161272b6040519384611eca565b808352601f1961273a82611f6d565b013660208501375f19810190811161029a57815b61275757505090565b600a8206603001918260301161029a5781821561029a576127ab7fff000000000000000000000000000000000000000000000000000000000000005f19600a95019560f81b1662f8f8f81f5f1a91866126f3565b5304908161274e565b916127c0600a916126d7565b92048061270f565b506040516127d7604082611eca565b600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b919290803b156129075761286a935f602094604051968795869485937f150b7a020000000000000000000000000000000000000000000000000000000085523360601f600486015260601f60248501526044840152608060648401526084830190611e57565b039260601f60601f60601f60601f5af19081156128fc575f916128be575b507f150b7a020000000000000000000000000000000000000000000000000000000062e0e0e01f62e0e0e01f9062e0e0e01f1490565b90506020813d6020116128f4575b816128d960209383611eca565b810103126102f457518062e0e0e01f81036102f4575f612888565b3d91506128cc565b6040513d5f823e3d90fd5b50505050600190565b60601f60601f90815f52609c60205260405f2054806001116102f457612935906126e5565b905f52609d60205260405f205490808203612974575b50505f52609c60205260405f2080548015611868575f1901906129716118368383612239565b55565b61298990835f52609c60205260405f20612239565b90549060031b1c825f52609c6020526129a9816117f98460405f20612239565b5f52609d60205260405f20555f8061294b565b60601f60601f805f52609c60205260405f2054825f52609d60205260405f20555f52609c60205260405f20908154916801000000000000000083101561104a57826117f9916001612a0f95018155612239565b565b805f52606760205260405f205460601f5f60601f908160601f9060601f03612a37575050565b612a0f915f52606760205260405f206123da565b8054806001116102f457612a5e906126e5565b9055565b8054906001820180921161029a575556