This contract is not verified yet.
Publish its source to get the code, ABI, read and write tabs. Anyone can verify any contract.
bytecode
20,636 bytes
0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c806370a0823111610171578063c4f8a1b0116100d2578063ec97908211610088578063f5d68c301161006e578063f5d68c301461084e578063fb526b1014610877578063fc8100431461087f575f80fd5b8063ec9790821461080d578063f0f442601461083b575f80fd5b8063d448eebc116100b8578063d448eebc1461079f578063d55be8c6146107d8578063e985e9c5146107e0575f80fd5b8063c4f8a1b014610779578063c87b56dd1461078c575f80fd5b80639c5b709111610127578063b4326d3e1161010d578063b4326d3e146106b4578063b88d4fde146106c7578063c48b3324146106da575f80fd5b80639c5b70911461067d578063a22cb465146106a1575f80fd5b80638e005553116101575780638e0055531461056e5780638f64be301461058157806395d89b4114610675575f80fd5b806370a082311461053b5780638da5cb5b1461054e575f80fd5b806342842e0e1161021b578063607513c4116101d157806361d027b3116101b757806361d027b3146104dc5780636352211e146104fc5780636e03d0871461050f575f80fd5b8063607513c41461047e57806360f784f614610491575f80fd5b80634a5c4dfe116102015780634a5c4dfe1461042a57806352cd0d401461043357806353fa138614610446575f80fd5b806342842e0e146103fe578063487a603814610411575f80fd5b8063095ea7b31161027057806319d483fb1161025657806319d483fb1461038157806323b872dd146103af578063306488d7146103c2575f80fd5b8063095ea7b31461035957806313af40351461036e575f80fd5b806301ffc9a7146102a157806303d989be146102c957806306fdde03146102ea578063081812fc146102ff575b5f80fd5b6102b46102af366004614617565b610892565b60405190151581526020015b60405180910390f35b6102dc6102d736600461468a565b610976565b6040519081526020016102c0565b6102f2611016565b6040516102c091906146db565b61033461030d36600461472e565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102c0565b61036c610367366004614768565b6110a1565b005b61036c61037c366004614790565b6111ed565b61039461038f3660046147a9565b6112b8565b6040805162ffffff90931683529015156020830152016102c0565b61036c6103bd3660046147e9565b6112ee565b6103d56103d0366004614834565b6115b1565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016102c0565b61036c61040c3660046147e9565b6118f5565b6104185f81565b60405160ff90911681526020016102c0565b6102dc60085481565b6103d561044136600461472e565b611a5b565b61046a61045436600461487a565b600c6020525f908152604090205462ffffff1681565b60405162ffffff90911681526020016102c0565b6103d561048c366004614834565b6120c9565b6104a461049f3660046147a9565b612408565b6040805163ffffffff90951685526fffffffffffffffffffffffffffffffff90931660208501529183015260608201526080016102c0565b6007546103349073ffffffffffffffffffffffffffffffffffffffff1681565b61033461050a36600461472e565b612527565b61052261051d366004614893565b6125b7565b60405167ffffffffffffffff90911681526020016102c0565b6102dc610549366004614790565b61290c565b6006546103349073ffffffffffffffffffffffffffffffffffffffff1681565b61036c61057c3660046148ca565b6129b2565b61061961058f36600461472e565b600b6020525f90815260409020805460019091015467ffffffffffffffff82169162ffffff680100000000000000008204169160ff6b0100000000000000000000008304169163ffffffff6c01000000000000000000000000820416916fffffffffffffffffffffffffffffffff7001000000000000000000000000000000009092048216911686565b6040805167ffffffffffffffff909716875262ffffff909516602087015260ff9093169385019390935263ffffffff1660608401526fffffffffffffffffffffffffffffffff91821660808401521660a082015260c0016102c0565b6102f2612abd565b61046a61068b36600461487a565b600d6020525f908152604090205462ffffff1681565b61036c6106af3660046148e3565b612aca565b6103d56106c236600461472e565b612b60565b61036c6106d536600461491c565b612ea2565b6107346106e836600461487a565b60096020525f908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff91821692909116906fffffffffffffffffffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff94851681529390921660208401526fffffffffffffffffffffffffffffffff16908201526060016102c0565b6103946107873660046149b1565b612ff9565b6102f261079a36600461472e565b613097565b6007546107c59074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020016102c0565b6107c5603281565b6102b46107ee3660046149e2565b600560209081525f928352604080842090915290825290205460ff1681565b60075461052290760100000000000000000000000000000000000000000000900467ffffffffffffffff1681565b61036c610849366004614790565b613221565b61052261085c36600461472e565b600a6020525f908152604090205467ffffffffffffffff1681565b610418600181565b6102dc61088d366004614a0a565b613332565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061092457507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061097057507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b67ffffffffffffffff84165f9081526009602090815260408083208151606081018352815473ffffffffffffffffffffffffffffffffffffffff9081168083526001840154909116948201949094526002909101546fffffffffffffffffffffffffffffffff169181019190915290610a1b576040517f57cb452500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8462ffffff165f03610a59576040517fbad690b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff85161115610a97576040517f8f3723ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826fffffffffffffffffffffffffffffffff165f03610ae2576040517f749b593900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c088901b7fffffffffffffffff0000000000000000000000000000000000000000000000001660208083019190915260f887901b7fff0000000000000000000000000000000000000000000000000000000000000016602883015260e888901b7fffffff00000000000000000000000000000000000000000000000000000000001660298301528251600c818403018152602c90920190925280519101205f905f818152600e6020526040812080549293509164010000000090046fffffffffffffffffffffffffffffffff169003610bdc576b033b2e3c9fd0803ce80000008160010181905550610bdc8887896001613376565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff871601610c8b5767ffffffffffffffff88165f908152600c602052604090205462ffffff16801580610c3a57508062ffffff168862ffffff16105b15610c855767ffffffffffffffff89165f908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662ffffff8a161790555b50610cfa565b67ffffffffffffffff88165f908152600d602052604090205462ffffff9081169088161115610cfa5767ffffffffffffffff88165f908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662ffffff89161790555b5f610d28866fffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce8000000846001015461340b565b825490915081908390600490610d5990849064010000000090046fffffffffffffffffffffffffffffffff16614a5f565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060085f8154610d9d90614a87565b91905081905594506040518060c001604052808a67ffffffffffffffff1681526020018962ffffff1681526020018860ff168152602001835f015f9054906101000a900463ffffffff1663ffffffff168152602001876fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff16815250600b5f8781526020019081526020015f205f820151815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506020820151815f0160086101000a81548162ffffff021916908362ffffff1602179055506040820151815f01600b6101000a81548160ff021916908360ff1602179055506060820151815f01600c6101000a81548163ffffffff021916908363ffffffff1602179055506080820151815f0160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060a0820151816001015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050610f973330886fffffffffffffffffffffffffffffffff16600160ff168b60ff1614610f76578760200151610f79565b87515b73ffffffffffffffffffffffffffffffffffffffff16929190613429565b610fa1338661351c565b6040805162ffffff8a16815260ff891660208201526fffffffffffffffffffffffffffffffff8816818301529051339167ffffffffffffffff8c169188917fef539d778f9252f1ebb283a661ddc03c0a23692653e6d4ad9d1236c159d7b6c2919081900360600190a450505050949350505050565b5f805461102290614abe565b80601f016020809104026020016040519081016040528092919081815260200182805461104e90614abe565b80156110995780601f1061107057610100808354040283529160200191611099565b820191905f5260205f20905b81548152906001019060200180831161107c57829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480611102575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b61116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60065473ffffffffffffffffffffffffffffffffffffffff16331461123e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe2906020015b60405180910390a150565b5f8060ff84166001146112d5576112d0855f856136b3565b6112e1565b6112e18560018561380e565b915091505b935093915050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401611164565b73ffffffffffffffffffffffffffffffffffffffff82166113fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401611164565b3373ffffffffffffffffffffffffffffffffffffffff8416148061144d575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b8061147a57505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6114e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401611164565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b67ffffffffffffffff84165f9081526009602090815260408083208151606081018352815473ffffffffffffffffffffffffffffffffffffffff9081168083526001840154909116948201949094526002909101546fffffffffffffffffffffffffffffffff16918101919091528291611657576040517f57cb452500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff86161580611678575061ffff8416155b156116af576040517f749b593900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6116c08883604001518988613935565b90945090506fffffffffffffffffffffffffffffffff84165f03611710576040517f3482428a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007545f90611751906fffffffffffffffffffffffffffffffff84169074010000000000000000000000000000000000000000900461ffff1661271061340b565b905061175d8183614b0f565b9350866fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1610156117bd576040517f29a9a48a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516117f39073ffffffffffffffffffffffffffffffffffffffff1633306fffffffffffffffffffffffffffffffff8916613429565b602083015161182b9073ffffffffffffffffffffffffffffffffffffffff16336fffffffffffffffffffffffffffffffff8716613a55565b6fffffffffffffffffffffffffffffffff8116156118815760075460208401516118819173ffffffffffffffffffffffffffffffffffffffff91821691166fffffffffffffffffffffffffffffffff8416613a55565b604080515f81526fffffffffffffffffffffffffffffffff878116602083015284811682840152831660608201529051339167ffffffffffffffff8c16917fd9cc617cb5d8de92f7546db94f7795197a29166207328eeec9464179d6bb10d69181900360800190a350505094509492505050565b6119008383836112ee565b73ffffffffffffffffffffffffffffffffffffffff82163b15806119f057506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af11580156119a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119cc9190614b37565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b611a56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401611164565b505050565b5f81815260026020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680611ab8576040517fe373cd6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614801590611b0e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff16155b8015611b3d57505f8481526004602052604090205473ffffffffffffffffffffffffffffffffffffffff163314155b15611b74576040517fe373cd6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320815160c08082018452825467ffffffffffffffff811680845262ffffff6801000000000000000083041684880190815260ff6b01000000000000000000000084041685880190815263ffffffff6c010000000000000000000000008504166060808801919091526fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090950485166080880152600197880154851660a0880152928a5260098952878a2088519384018952805473ffffffffffffffffffffffffffffffffffffffff908116855297810154909716838a01526002909601549092168187015283519451915186519590931b7fffffffffffffffff000000000000000000000000000000000000000000000000168588015260f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016602885015260e89190911b7fffffff00000000000000000000000000000000000000000000000000000000001660298401528351600c818503018152602c90930190935281519190930120919290915f818152600e60205260408120805460608701519394509092829163ffffffff908116911603611e9657611d6e8660a001516fffffffffffffffffffffffffffffffff1684600101546b033b2e3c9fd0803ce800000061340b565b9150611da18660a001516fffffffffffffffffffffffffffffffff1684600101546b033b2e3c9fd0803ce8000000613b32565b905085608001516fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115611ddb57856080015191505b85608001516fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161115611e12575060808501515b60a086015183548490600490611e4390849064010000000090046fffffffffffffffffffffffffffffffff16614b0f565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584546401000000009004165f039050611e9657611e96865f0151876040015188602001515f613376565b5f818760800151611ea79190614b0f565b90505f86604001516fffffffffffffffffffffffffffffffff16886020015162ffffff16611ed59190614b52565b604089015190915060ff16600114611f1157611f0c826fffffffffffffffffffffffffffffffff16670de0b6b3a76400008361340b565b611f36565b611f36826fffffffffffffffffffffffffffffffff1682670de0b6b3a764000061340b565b5f8d8152600b6020526040812090815560010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055939a509298508992611f808c613b77565b6fffffffffffffffffffffffffffffffff8b1615611feb57611feb898c6fffffffffffffffffffffffffffffffff16600160ff168b6040015160ff1614611fcb578960200151611fce565b89515b73ffffffffffffffffffffffffffffffffffffffff169190613a55565b6fffffffffffffffffffffffffffffffff8a161561205557612055898b6fffffffffffffffffffffffffffffffff16600160ff168b6040015160ff1614612033578951611fce565b896020015173ffffffffffffffffffffffffffffffffffffffff169190613a55565b604080516fffffffffffffffffffffffffffffffff808e1682528c16602082015273ffffffffffffffffffffffffffffffffffffffff8b16918e917f1cb294870afce1d50777524dc318549230fc89b6c6a35d0e21fd5d6c56e80042910160405180910390a3505050505050505050915091565b67ffffffffffffffff84165f9081526009602090815260408083208151606081018352815473ffffffffffffffffffffffffffffffffffffffff9081168083526001840154909116948201949094526002909101546fffffffffffffffffffffffffffffffff1691810191909152829161216f576040517f57cb452500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff86161580612190575061ffff8416155b156121c7576040517f749b593900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121d78782604001518887613cbf565b90935091506fffffffffffffffffffffffffffffffff83165f03612227576040517f3482428a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115612285576040517f56aba71f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007545f906122c6906fffffffffffffffffffffffffffffffff86169074010000000000000000000000000000000000000000900461ffff1661271061340b565b60208301519091506123029073ffffffffffffffffffffffffffffffffffffffff1633306fffffffffffffffffffffffffffffffff8716613429565b612341336123108387614b0f565b845173ffffffffffffffffffffffffffffffffffffffff1691906fffffffffffffffffffffffffffffffff16613a55565b6fffffffffffffffffffffffffffffffff8116156123945760075482516123949173ffffffffffffffffffffffffffffffffffffffff91821691166fffffffffffffffffffffffffffffffff8416613a55565b60408051600181526fffffffffffffffffffffffffffffffff868116602083015285811682840152831660608201529051339167ffffffffffffffff8b16917fd9cc617cb5d8de92f7546db94f7795197a29166207328eeec9464179d6bb10d69181900360800190a3505094509492505050565b5f805f805f600e5f6124c18a8a8a6040517fffffffffffffffff00000000000000000000000000000000000000000000000060c085901b1660208201527fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660288201527fffffff000000000000000000000000000000000000000000000000000000000060e883901b1660298201525f90602c016040516020818303038152906040528051906020012090509392505050565b815260208101919091526040015f208054600182015491925063ffffffff8116916401000000009091046fffffffffffffffffffffffffffffffff169061251582826b033b2e3c9fd0803ce800000061340b565b94509450945094505093509350935093565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16806125b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401611164565b919050565b5f73ffffffffffffffffffffffffffffffffffffffff841615806125ef575073ffffffffffffffffffffffffffffffffffffffff8316155b8061262557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561265c576040517f57cb452500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff165f036126a7576040517fbad690b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff80871660208301528516918101919091526fffffffffffffffffffffffffffffffff831660608201525f90608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301205f818152600a90935291205490915067ffffffffffffffff1615612774576040517f8fc6f59b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780546016906127a890760100000000000000000000000000000000000000000000900467ffffffffffffffff16614b69565b825467ffffffffffffffff8281166101009490940a848102910219909116179092556040805160608101825273ffffffffffffffffffffffffffffffffffffffff89811680835289821660208085018281526fffffffffffffffffffffffffffffffff8c81168789018181525f8b8152600986528a812099518a54908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178b55945160018b01805491909a16951694909417909755955160029097018054979091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090971696909617909555888552600a81529385902080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016871790559351918252949650919392917fb50a2e6dae1e0b9b190d13efd43438b595024b2e239120daebb96a37052a011b910160405180910390a4509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff821661298a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401611164565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b60065473ffffffffffffffffffffffffffffffffffffffff163314612a03576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603261ffff82161115612a42576040517fcd4e616700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527faab062e3faf62b6c9a0f8e62af66e0310e27127a8c871a67be7dd4d93de6da53906020016112ad565b6001805461102290614abe565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f818152600b60209081526040808320815160c081018352815467ffffffffffffffff8116825268010000000000000000810462ffffff16948201949094526b010000000000000000000000840460ff16928101929092526c01000000000000000000000000830463ffffffff1660608301527001000000000000000000000000000000009092046fffffffffffffffffffffffffffffffff908116608083018190526001909301541660a082015282918203612c2257505f93849350915050565b8051604080830151602080850151835160c09590951b7fffffffffffffffff000000000000000000000000000000000000000000000000168583015260f89290921b7fff0000000000000000000000000000000000000000000000000000000000000016602885015260e89190911b7fffffff00000000000000000000000000000000000000000000000000000000001660298401528151600c818503018152602c90930190915281519101205f90600e908290815260208101919091526040015f90812080546060850151919350829163ffffffff918216911603612dd757612d338460a001516fffffffffffffffffffffffffffffffff1684600101546b033b2e3c9fd0803ce800000061340b565b9150612d668460a001516fffffffffffffffffffffffffffffffff1684600101546b033b2e3c9fd0803ce8000000613b32565b905083608001516fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115612da057836080015191505b83608001516fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161115612dd7575060808301515b5f818560800151612de89190614b0f565b855167ffffffffffffffff165f908152600960209081526040822060020154908801519293509091612e31916fffffffffffffffffffffffffffffffff169062ffffff16614b52565b604087015190915060ff16600114612e6d57612e68826fffffffffffffffffffffffffffffffff16670de0b6b3a76400008361340b565b612e92565b612e92826fffffffffffffffffffffffffffffffff1682670de0b6b3a764000061340b565b9650839750505050505050915091565b612ead8585856112ee565b73ffffffffffffffffffffffffffffffffffffffff84163b1580612f8c57506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a0290612f289033908a90899089908990600401614b95565b6020604051808303815f875af1158015612f44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f689190614b37565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b612ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401611164565b5050505050565b5f808060ff841660011461302a5767ffffffffffffffff85165f908152600d602052604090205462ffffff16613049565b67ffffffffffffffff85165f908152600c602052604090205462ffffff165b90508062ffffff165f03613063575f809250925050613090565b60ff841660011461307e57613079855f836136b3565b61308a565b61308a8560018361380e565b92509250505b9250929050565b5f818152600b60209081526040808320815160c081018352815467ffffffffffffffff8116825268010000000000000000810462ffffff16948201949094526b010000000000000000000000840460ff16928101929092526c01000000000000000000000000830463ffffffff166060808401919091527001000000000000000000000000000000009093046fffffffffffffffffffffffffffffffff908116608084018190526001909201541660a083015291929091900361316957505060408051602081019091525f8152919050565b60408101515f9060ff166001146131b5576040518060400160405280600681526020017f37383931374300000000000000000000000000000000000000000000000000008152506131ec565b6040518060400160405280600681526020017f42363636353000000000000000000000000000000000000000000000000000008152505b90506131f784613df2565b81604051602001613209929190614c39565b60405160208183030381529060405292505050919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314613272576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166132bf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f906020016112ad565b67ffffffffffffffff82165f9081526009602052604081206002015461336f906fffffffffffffffffffffffffffffffff1662ffffff8416614b52565b9392505050565b61ffff600883901c16600160ff84161b82156133c95767ffffffffffffffff86165f908152600f6020908152604080832060ff89168452825280832061ffff861684529091529020805482179055613403565b67ffffffffffffffff86165f908152600f6020908152604080832060ff89168452825280832061ffff861684529091529020805482191690555b505050505050565b5f816134178486614b52565b6134219190614f21565b949350505050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f5114161516156134b55750833b153d17155b80612ff2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401611164565b73ffffffffffffffffffffffffffffffffffffffff8216613599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401611164565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615613624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401611164565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f8061ffff600884901c1660ff80851690839082146136ee5760016136d88382614f34565b60ff166001901b6136e99190614f4d565b613710565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b67ffffffffffffffff89165f908152600f6020908152604080832060ff8c168452825280832061ffff88168452909152812054919250908216905b60408110156137fd5781156137805761376382613f1e565b60ff1660088661ffff16901b1760019650965050505050506112e6565b8461ffff165f0361379b575f809650965050505050506112e6565b67ffffffffffffffff8a165f908152600f6020908152604080832060ff8d168452825280832061ffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9099019889168452909152902054915060010161374b565b505f998a9950975050505050505050565b67ffffffffffffffff83165f908152600f6020908152604080832060ff868116855290835281842061ffff600887901c168086529352908320548392918516907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b16835b60408110156139255781156138a85761388c82613fbe565b60ff1660088561ffff16901b17600195509550505050506112e6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000161ffff8516016138e2575f8095509550505050506112e6565b67ffffffffffffffff89165f908152600f6020908152604080832060ff8c1684528252808320600197880161ffff81168552925290912054909490925001613874565b505f988998509650505050505050565b67ffffffffffffffff84165f908152600d602052604081205481906fffffffffffffffffffffffffffffffff85169062ffffff1680830361397d575f80935093505050613a4c565b5f5b8561ffff168110801561399157505f83115b15613a48575f806139a38b5f866136b3565b91509150806139b3575050613a48565b5f805f6139c28e868f8b613fce565b92509250925080156139d8575050505050613a48565b6139f46fffffffffffffffffffffffffffffffff841689614f4d565b9750613a00838b614a5f565b9950613a0c828a614a5f565b98508462ffffff16600103613a25575050505050613a48565b613a30600186614f60565b9650505050505080613a4190614a87565b905061397f565b5050505b94509492505050565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af191505080601f3d1160015f511416151615613ac55750823b153d17155b80613b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401611164565b50505050565b5f80613b3e8486614b52565b90508015613b6c5782613b52600183614f4d565b613b5c9190614f21565b613b67906001614f7b565b613b6e565b5f5b95945050505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680613c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401611164565b73ffffffffffffffffffffffffffffffffffffffff81165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526002825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b67ffffffffffffffff84165f908152600c602052604081205481906fffffffffffffffffffffffffffffffff85169062ffffff16808303613d07575f80935093505050613a4c565b5f5b8561ffff1681108015613d1b57505f83115b15613a48575f80613d2e8b60018661380e565b9150915080613d3e575050613a48565b5f805f613d4d8e868f8b6142aa565b9250925092508015613d63575050505050613a48565b613d7f6fffffffffffffffffffffffffffffffff841689614f4d565b9750613d8b838b614a5f565b9950613d97828a614a5f565b98507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000162ffffff861601613dcf575050505050613a48565b613dda856001614f8e565b9650505050505080613deb90614a87565b9050613d09565b6060815f03613e3457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b815f5b8115613e5a57613e4681614a87565b9050613e53600a83614f21565b9150613e37565b5f8167ffffffffffffffff811115613e7457613e74614fa9565b6040519080825280601f01601f191660200182016040528015613e9e576020820181803683370190505b5090505b841561342157613eb3600a86614fd6565b613ebe906030614f7b565b60f81b81613ecb84614fe9565b93508381518110613ede57613ede61501d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350613f17600a86614f21565b9450613ea2565b5f7001000000000000000000000000000000008210613f3f57608091821c91015b680100000000000000008210613f5757604091821c91015b6401000000008210613f6b57602091821c91015b620100008210613f7d57601091821c91015b6101008210613f8e57600891821c91015b60108210613f9e57600491821c91015b60048210613fae57600291821c91015b600282106125b257600101919050565b5f61097082196001018316613f1e565b6040805160c086901b7fffffffffffffffff000000000000000000000000000000000000000000000000166020808301919091525f6028830181905260e887901b7fffffff00000000000000000000000000000000000000000000000000000000001660298401528351600c818503018152602c90930184528251928201929092208252600e905290812080546001820154839283929091839161409a916401000000009091046fffffffffffffffffffffffffffffffff16906b033b2e3c9fd0803ce8000000613b32565b9050805f036140bf576140af895f8a5f613376565b5f805f94509450945050506142a0565b5f6140e16fffffffffffffffffffffffffffffffff891662ffffff8b16614b52565b90505f6140f783670de0b6b3a764000084613b32565b90508088106141b95783546001850154919750879161413d9164010000000090046fffffffffffffffffffffffffffffffff16906b033b2e3c9fd0803ce800000061340b565b955061414b848c5f8d614534565b604080515f81526fffffffffffffffffffffffffffffffff8816602082015260019181019190915262ffffff8b169067ffffffffffffffff8d16907f4ca599137b8e24c8d0be88fe9c944e8e0a106b9d67c063a22fe2c314c14f3ccc906060015b60405180910390a361429b565b5f6141cd8984670de0b6b3a764000061340b565b9050805f036141ea575f80600197509750975050505050506142a0565b845460018601548a995091975087916142369187916142309164010000000090046fffffffffffffffffffffffffffffffff16906b033b2e3c9fd0803ce800000061340b565b836145b2565b604080515f8082526fffffffffffffffffffffffffffffffff8a16602083015281830152905162ffffff8d169167ffffffffffffffff8f16917f4ca599137b8e24c8d0be88fe9c944e8e0a106b9d67c063a22fe2c314c14f3ccc9181900360600190a3505b505050505b9450945094915050565b6040805160c086901b7fffffffffffffffff000000000000000000000000000000000000000000000000166020808301919091527f0100000000000000000000000000000000000000000000000000000000000000602883015260e886901b7fffffff00000000000000000000000000000000000000000000000000000000001660298301528251600c818403018152602c90920183528151918101919091205f908152600e909152908120805460018201548392839290918391614397916401000000009091046fffffffffffffffffffffffffffffffff16906b033b2e3c9fd0803ce8000000613b32565b9050805f036143ad576140af8960018a5f613376565b815460018301545f916143e8916401000000009091046fffffffffffffffffffffffffffffffff16906b033b2e3c9fd0803ce800000061340b565b90505f61440c6fffffffffffffffffffffffffffffffff8a1662ffffff8c16614b52565b905081881061449f5781965061442b8382670de0b6b3a7640000613b32565b955061443a848c60018d614534565b6040805160018082526fffffffffffffffffffffffffffffffff8a1660208301529181019190915262ffffff8b169067ffffffffffffffff8d16907f4ca599137b8e24c8d0be88fe9c944e8e0a106b9d67c063a22fe2c314c14f3ccc906060016141ac565b8796506144b58882670de0b6b3a7640000613b32565b95506144c284838a6145b2565b60408051600181526fffffffffffffffffffffffffffffffff891660208201525f81830152905162ffffff8c169167ffffffffffffffff8e16917f4ca599137b8e24c8d0be88fe9c944e8e0a106b9d67c063a22fe2c314c14f3ccc9181900360600190a3505050509450945094915050565b835460019085905f9061454e90849063ffffffff1661504a565b825463ffffffff9182166101009390930a92830291909202199091161790555083547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff1684556b033b2e3c9fd0803ce80000006001850155613b2c8383835f613376565b818110156145d85760018301546145d3906145cd8385614f4d565b8461340b565b6145da565b5f5b8360010181905550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114614614575f80fd5b50565b5f60208284031215614627575f80fd5b813561336f816145e7565b803567ffffffffffffffff811681146125b2575f80fd5b803562ffffff811681146125b2575f80fd5b803560ff811681146125b2575f80fd5b80356fffffffffffffffffffffffffffffffff811681146125b2575f80fd5b5f805f806080858703121561469d575f80fd5b6146a685614632565b93506146b460208601614649565b92506146c26040860161465b565b91506146d06060860161466b565b905092959194509250565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561473e575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146125b2575f80fd5b5f8060408385031215614779575f80fd5b61478283614745565b946020939093013593505050565b5f602082840312156147a0575f80fd5b61336f82614745565b5f805f606084860312156147bb575f80fd5b6147c484614632565b92506147d26020850161465b565b91506147e060408501614649565b90509250925092565b5f805f606084860312156147fb575f80fd5b61480484614745565b925061481260208501614745565b929592945050506040919091013590565b803561ffff811681146125b2575f80fd5b5f805f8060808587031215614847575f80fd5b61485085614632565b935061485e6020860161466b565b925061486c6040860161466b565b91506146d060608601614823565b5f6020828403121561488a575f80fd5b61336f82614632565b5f805f606084860312156148a5575f80fd5b6148ae84614745565b92506148bc60208501614745565b91506147e06040850161466b565b5f602082840312156148da575f80fd5b61336f82614823565b5f80604083850312156148f4575f80fd5b6148fd83614745565b915060208301358015158114614911575f80fd5b809150509250929050565b5f805f805f60808688031215614930575f80fd5b61493986614745565b945061494760208701614745565b935060408601359250606086013567ffffffffffffffff811115614969575f80fd5b8601601f81018813614979575f80fd5b803567ffffffffffffffff81111561498f575f80fd5b8860208284010111156149a0575f80fd5b959894975092955050506020019190565b5f80604083850312156149c2575f80fd5b6149cb83614632565b91506149d96020840161465b565b90509250929050565b5f80604083850312156149f3575f80fd5b6149fc83614745565b91506149d960208401614745565b5f8060408385031215614a1b575f80fd5b614a2483614632565b91506149d960208401614649565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6fffffffffffffffffffffffffffffffff818116838216019081111561097057610970614a32565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ab757614ab7614a32565b5060010190565b600181811c90821680614ad257607f821691505b602082108103614b09577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b6fffffffffffffffffffffffffffffffff828116828216039081111561097057610970614a32565b5f60208284031215614b47575f80fd5b815161336f816145e7565b808202811582820484141761097057610970614a32565b5f67ffffffffffffffff821667ffffffffffffffff8103614b8c57614b8c614a32565b60010192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c000000000081527f7b226e616d65223a224d6f736169632050696563652023000000000000000000601b8201525f614c906032830185614c22565b7f222c226465736372697074696f6e223a2241207472616e7366657261626c652081527f636c61696d20736561746564206174206f6e65207072696365207469636b206f60208201527f6e204d6f736169632e222c00000000000000000000000000000000000000000060408201527f22696d616765223a22646174613a696d6167652f7376672b786d6c3b75746638604b8201527f2c00000000000000000000000000000000000000000000000000000000000000606b8201527f3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f3230606c8201527f30302f737667272076696577426f783d273020302033303020333030273e0000608c8201527f3c726563742077696474683d2733303027206865696768743d2733303027206660aa82019081527f696c6c3d27253233463546304446272f3e00000000000000000000000000000060ca8301529060db01614ebd614e48614e42837f3c7265637420783d2734302720793d273430272077696474683d27323230272081527f6865696768743d27323230272072783d2736272066696c6c3d272532330000006020820152603d0190565b87614c22565b7f272f3e3c7265637420783d2734302720793d273430272077696474683d27323281527f3027206865696768743d27323230272072783d2736272066696c6c3d276e6f6e60208201527f6527207374726f6b653d27253233433942464138272f3e000000000000000000604082015260570190565b915050614ee9817f3c2f7376673e227d0000000000000000000000000000000000000000000000009052565b600801949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82614f2f57614f2f614ef4565b500490565b60ff818116838216019081111561097057610970614a32565b8181038181111561097057610970614a32565b62ffffff828116828216039081111561097057610970614a32565b8082018082111561097057610970614a32565b62ffffff818116838216019081111561097057610970614a32565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82614fe457614fe4614ef4565b500690565b5f81614ff757614ff7614a32565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b63ffffffff818116838216019081111561097057610970614a3256fea26469706673582212203d39dfb2d86e6b961f8e284e63d1b1d5b8d16973c12d1115408d003f7b0888df64736f6c634300081a0033