From 1596da74e3ed9f3a2a4c4b29aa4ec8e9e04693dc Mon Sep 17 00:00:00 2001 From: Ernane Aguiar Date: Wed, 17 Jul 2024 09:58:13 -0300 Subject: [PATCH] update bytecodes with prod mainnet ones --- modules/m-core/bytecode/DistributionVault.json | 2 +- modules/m-core/bytecode/EmergencyGovernor.json | 2 +- modules/m-core/bytecode/EmergencyGovernorDeployer.json | 2 +- modules/m-core/bytecode/PowerBootstrapToken.json | 2 +- modules/m-core/bytecode/PowerToken.json | 2 +- modules/m-core/bytecode/PowerTokenDeployer.json | 2 +- modules/m-core/bytecode/Registrar.json | 2 +- modules/m-core/bytecode/StandardGovernor.json | 2 +- modules/m-core/bytecode/StandardGovernorDeployer.json | 2 +- modules/m-core/bytecode/ZeroGovernor.json | 2 +- modules/m-core/bytecode/ZeroToken.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/m-core/bytecode/DistributionVault.json b/modules/m-core/bytecode/DistributionVault.json index 5232692e..675bc9b6 100644 --- a/modules/m-core/bytecode/DistributionVault.json +++ b/modules/m-core/bytecode/DistributionVault.json @@ -1 +1 @@ -{ "bytecode": "0x60e060405234801562000010575f80fd5b50604051620022643803806200226483398101604081905262000033916200014d565b604080518082019091526011815270111a5cdd1c9a589d5d1a5bdb95985d5b1d607a1b6020820152805f6200006982826200021a565b504660805262000078620000b1565b60a05250506001600160a01b03811660c0819052620000aa57604051631fb9659f60e21b815260040160405180910390fd5b5062000360565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620000e59190620002e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f602082840312156200015e575f80fd5b81516001600160a01b038116811462000175575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620001a557607f821691505b602082108103620001c457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200021557805f5260205f20601f840160051c81016020851015620001f15750805b601f840160051c820191505b8181101562000212575f8155600101620001fd565b50505b505050565b81516001600160401b038111156200023657620002366200017c565b6200024e8162000247845462000190565b84620001ca565b602080601f83116001811462000284575f84156200026c5750858301515b5f19600386901b1c1916600185901b178555620002de565b5f85815260208120601f198616915b82811015620002b45788860151825594840194600190910190840162000293565b5085821015620002d257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620002f58162000190565b60018281168015620003105760018114620003265762000354565b60ff198416875282151583028701945062000354565b875f526020805f205f5b858110156200034b5781548a82015290840190820162000330565b50505082870194505b50929695505050505050565b60805160a05160c051611ecb620003995f395f81816102cc0152818161097a0152610a5501525f6103f101525f6103bc0152611ecb5ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c806363453ae1116100ad5780637ecebe001161007d57806391ddadf41161006357806391ddadf414610295578063e3811b65146102b4578063f294bd92146102c7575f80fd5b80637ecebe001461025b57806384b0196e1461027a575f80fd5b806363453ae1146101fb578063644761331461020e5780636a995a3b146102215780636b0509b114610234575f80fd5b806338c4cc76116100e857806338c4cc76146101a35780634a537d0b146101cd5780634bf5d7e9146101e05780635e15a6b6146101e8575f80fd5b806306fdde03146101195780630815961414610137578063093c4e0e1461017a5780633644e5151461019b575b5f80fd5b610121610313565b60405161012e91906116b8565b60405180910390f35b61016a6101453660046116f2565b600460209081525f938452604080852082529284528284209052825290205460ff1681565b604051901515815260200161012e565b61018d61018836600461172b565b6103a2565b60405190815260200161012e565b61018d6103b9565b61018d6101b136600461176e565b600360209081525f928352604080842090915290825290205481565b61018d6101db366004611796565b610413565b6101216104a2565b61018d6101f636600461181e565b6104ac565b61018d61020936600461181e565b610559565b61018d61021c3660046118b3565b610615565b61018d61022f3660046119ac565b6106a0565b61018d7f4b4633c3c305de33d5d9cf70f2712f26961648cd68d020c2556a9e43be58051d81565b61018d61026936600461181e565b60016020525f908152604090205481565b61028261073b565b60405161012e9796959493929190611a11565b61029d610873565b60405165ffffffffffff909116815260200161012e565b61018d6102c2366004611ad1565b610885565b6102ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b60605f805461032190611b10565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611b10565b80156103985780601f1061036f57610100808354040283529160200191610398565b820191905f5260205f20905b81548152906001019060200180831161037b57829003601f168201915b5050505050905090565b5f6103b03386868686610c37565b95945050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146103ee576103e9610deb565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff89165f908152600160205260408120546104538b61044b818d8d8d8d888e6106a0565b878787610e85565b73ffffffffffffffffffffffffffffffffffffffff8b165f9081526001602081905260409091209101905561048785610ea1565b6104948a8a8a8a8a610c37565b9a9950505050505050505050565b60606103e9610ee7565b73ffffffffffffffffffffffffffffffffffffffff81165f818152600260205260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919290916370a0823190602401602060405180830381865afa158015610525573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105499190611b61565b6105539190611ba5565b92915050565b5f80610563610873565b65ffffffffffff169050610576836104ac565b9150808373ffffffffffffffffffffffffffffffffffffffff167fa8ee3e5c0b1fd681042265199e8b28cf463b81bc21f6658d4c73e741aeabd3f5846040516105c191815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff9092165f81815260036020908152604080832095835294815284822080548501905591815260029091529190912080548201905590565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600160205260408120546106538961064d818b8b8b8b888c6106a0565b85610f07565b73ffffffffffffffffffffffffffffffffffffffff89165f9081526001602081905260409091209101905561068783610ea1565b6106948888888888610c37565b98975050505050505050565b604080517f4b4633c3c305de33d5d9cf70f2712f26961648cd68d020c2556a9e43be58051d602082015273ffffffffffffffffffffffffffffffffffffffff808a169282019290925281881660608201526080810187905260a0810186905290841660c082015260e0810183905261010081018290525f90610694906101200160405160208183030381529060405280519060200120610f58565b5f606080828080838146308280604051908082528060200260200182016040528015610771578160200160208202803683370190505b507f0f0000000000000000000000000000000000000000000000000000000000000094939291908480546107a490611b10565b80601f01602080910402602001604051908101604052809291908181526020018280546107d090611b10565b801561081b5780601f106107f25761010080835404028352916020019161081b565b820191905f5260205f20905b8154815290600101906020018083116107fe57829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61087c610fb9565b61ffff16905090565b5f8061088f610873565b65ffffffffffff1690508083106108e1576040517f3260d32f00000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044015b60405180910390fd5b82841115610925576040517fcab6279d00000000000000000000000000000000000000000000000000000000815260048101859052602481018490526044016108d8565b6040517f0d33fbbd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052604482018590525f917f000000000000000000000000000000000000000000000000000000000000000090911690630d33fbbd906064015f60405180830381865afa1580156109c0573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a059190810190611bb8565b6040517f3cb1838f00000000000000000000000000000000000000000000000000000000815260048101879052602481018690529091505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690633cb1838f906044015f60405180830381865afa158015610a99573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ade9190810190611bb8565b90505f610aeb8787611ba5565b610af6906001611c4d565b90505f5b81811015610c22575f848281518110610b1557610b15611c60565b60200260200101519050805f03610b2c5750610c1a565b73ffffffffffffffffffffffffffffffffffffffff808c165f9081526004602090815260408083208d870184528252808320938e168352929052205460ff1615610b765750610c1a565b838281518110610b8857610b88611c60565b6020026020010151633b9aca008260035f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f868e610be09190611c4d565b81526020019081526020015f2054610bf89190611c8d565b610c029190611c8d565b610c0c9190611ca4565b610c169088611c4d565b9650505b600101610afa565b50633b9aca0085049998505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610c85576040517f5209852900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9185878686610885565b9050835b610ca0846001611c4d565b811015610d125773ffffffffffffffffffffffffffffffffffffffff8087165f9081526004602090815260408083208584528252808320938b1683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915501610c95565b5073ffffffffffffffffffffffffffffffffffffffff85165f9081526002602052604081208054839290610d47908490611ba5565b9091555050604080518581526020810185905290810182905273ffffffffffffffffffffffffffffffffffffffff80881691908716907f9137e112a187039f8a3291c0a66fce97153d25ec42036e82360d5d0106d19a6e9060600160405180910390a3610db5858383610fe1565b6103b0576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051610e1d9190611cdc565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b610e9a610e958686868686611078565b6110b4565b5050505050565b80421115610ee4576040517ff88f0490000000000000000000000000000000000000000000000000000000008152600481018290524260248201526044016108d8565b50565b60606040518060a0016040528060658152602001611e3160659139905090565b5f610f13848484611278565b90505f816005811115610f2857610f28611db1565b03610f335750505050565b610f3e8484846112bc565b15610f495750505050565b610f52816110b4565b50505050565b5f610f616103b9565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6213c680610fcc636322c96242611ba5565b610fd69190611ca4565b6103e9906001611c4d565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790525f90611070908590611404565b949350505050565b5f805f611087878787876114b8565b90925090505f82600581111561109f5761109f611db1565b146110aa5781610694565b61069488826115c5565b5f8160058111156110c7576110c7611db1565b036110cf5750565b60018160058111156110e3576110e3611db1565b0361111a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561112e5761112e611db1565b03611165576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381600581111561117957611179611db1565b036111b0576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156111c4576111c4611db1565b036111fb576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561120f5761120f611db1565b03611246576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6112858585611609565b90925090505f82600581111561129d5761129d611db1565b146112a857816112b2565b6112b286826115c5565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1685856040516024016112e9929190611dde565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e000000000000000000000000000000000000000000000000000000001790525161136a9190611df6565b5f60405180830381855afa9150503d805f81146113a2576040519150601f19603f3d011682016040523d82523d5f602084013e6113a7565b606091505b50915091508180156113bb57506020815110155b80156112b2575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906113f99083016020908101908401611b61565b149695505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61142857505f610553565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161144f9190611df6565b5f604051808303815f865af19150503d805f8114611488576040519150601f19603f3d011682016040523d82523d5f602084013e61148d565b606091505b5090925090508180156110705750805115806110705750808060200190518101906110709190611e11565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156114ed5750600390505f6115bc565b8460ff16601b1415801561150557508460ff16601c14155b156115155750600490505f6115bc565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611565573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156115b3575f816115b7565b60015f5b915091505b94509492505050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611600576005611602565b5f5b9392505050565b5f80825160411461161f5750600290505f611646565b6020830151604084015160608501515f1a919061163e878484846114b8565b945094505050505b9250929050565b5f5b8381101561166757818101518382015260200161164f565b50505f910152565b5f815180845261168681602086016020860161164d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f611602602083018461166f565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ed575f80fd5b919050565b5f805f60608486031215611704575f80fd5b61170d846116ca565b925060208401359150611722604085016116ca565b90509250925092565b5f805f806080858703121561173e575f80fd5b611747856116ca565b93506020850135925060408501359150611763606086016116ca565b905092959194509250565b5f806040838503121561177f575f80fd5b611788836116ca565b946020939093013593505050565b5f805f805f805f805f6101208a8c0312156117af575f80fd5b6117b88a6116ca565b98506117c660208b016116ca565b975060408a0135965060608a013595506117e260808b016116ca565b945060a08a0135935060c08a013560ff811681146117fe575f80fd5b8093505060e08a013591506101008a013590509295985092959850929598565b5f6020828403121561182e575f80fd5b611602826116ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156118ab576118ab611837565b604052919050565b5f805f805f805f60e0888a0312156118c9575f80fd5b6118d2886116ca565b965060206118e1818a016116ca565b965060408901359550606089013594506118fd60808a016116ca565b935060a0890135925060c089013567ffffffffffffffff80821115611920575f80fd5b818b0191508b601f830112611933575f80fd5b81358181111561194557611945611837565b611975847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611864565b91508082528c8482850101111561198a575f80fd5b80848401858401375f8482840101525080935050505092959891949750929550565b5f805f805f805f60e0888a0312156119c2575f80fd5b6119cb886116ca565b96506119d9602089016116ca565b955060408801359450606088013593506119f5608089016116ca565b925060a0880135915060c0880135905092959891949750929550565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152611a4d60e084018a61166f565b8381036040850152611a5f818a61166f565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015611abf57835183529284019291840191600101611aa3565b50909c9b505050505050505050505050565b5f805f8060808587031215611ae4575f80fd5b611aed856116ca565b9350611afb602086016116ca565b93969395505050506040820135916060013590565b600181811c90821680611b2457607f821691505b602082108103611b5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215611b71575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561055357610553611b78565b5f6020808385031215611bc9575f80fd5b825167ffffffffffffffff80821115611be0575f80fd5b818501915085601f830112611bf3575f80fd5b815181811115611c0557611c05611837565b8060051b9150611c16848301611864565b8181529183018401918481019088841115611c2f575f80fd5b938501935b8385101561069457845182529385019390850190611c34565b8082018082111561055357610553611b78565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761055357610553611b78565b5f82611cd7577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083545f60018260011c91506001831680611cf957607f831692505b60208084108203611d31577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015611d455760018114611d7857611da3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650611da3565b5f8a8152602090205f5b86811015611d9b5781548b820152908501908301611d82565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f611070604083018461166f565b5f8251611e0781846020870161164d565b9190910192915050565b5f60208284031215611e21575f80fd5b81518015158114611602575f80fdfe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220c3e35785f6e1057c021a84fb1fa1f2badeeaa7343033fceca31751ef0fdf395764736f6c63430008170033" } +{ "bytecode": "0x60e060405234801562000010575f80fd5b50604051620022643803806200226483398101604081905262000033916200014d565b604080518082019091526011815270111a5cdd1c9a589d5d1a5bdb95985d5b1d607a1b6020820152805f6200006982826200021a565b504660805262000078620000b1565b60a05250506001600160a01b03811660c0819052620000aa57604051631fb9659f60e21b815260040160405180910390fd5b5062000360565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620000e59190620002e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f602082840312156200015e575f80fd5b81516001600160a01b038116811462000175575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620001a557607f821691505b602082108103620001c457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200021557805f5260205f20601f840160051c81016020851015620001f15750805b601f840160051c820191505b8181101562000212575f8155600101620001fd565b50505b505050565b81516001600160401b038111156200023657620002366200017c565b6200024e8162000247845462000190565b84620001ca565b602080601f83116001811462000284575f84156200026c5750858301515b5f19600386901b1c1916600185901b178555620002de565b5f85815260208120601f198616915b82811015620002b45788860151825594840194600190910190840162000293565b5085821015620002d257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620002f58162000190565b60018281168015620003105760018114620003265762000354565b60ff198416875282151583028701945062000354565b875f526020805f205f5b858110156200034b5781548a82015290840190820162000330565b50505082870194505b50929695505050505050565b60805160a05160c051611ecb620003995f395f81816102cc0152818161097a0152610a5501525f6103f101525f6103bc0152611ecb5ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c806363453ae1116100ad5780637ecebe001161007d57806391ddadf41161006357806391ddadf414610295578063e3811b65146102b4578063f294bd92146102c7575f80fd5b80637ecebe001461025b57806384b0196e1461027a575f80fd5b806363453ae1146101fb578063644761331461020e5780636a995a3b146102215780636b0509b114610234575f80fd5b806338c4cc76116100e857806338c4cc76146101a35780634a537d0b146101cd5780634bf5d7e9146101e05780635e15a6b6146101e8575f80fd5b806306fdde03146101195780630815961414610137578063093c4e0e1461017a5780633644e5151461019b575b5f80fd5b610121610313565b60405161012e91906116b8565b60405180910390f35b61016a6101453660046116f2565b600460209081525f938452604080852082529284528284209052825290205460ff1681565b604051901515815260200161012e565b61018d61018836600461172b565b6103a2565b60405190815260200161012e565b61018d6103b9565b61018d6101b136600461176e565b600360209081525f928352604080842090915290825290205481565b61018d6101db366004611796565b610413565b6101216104a2565b61018d6101f636600461181e565b6104ac565b61018d61020936600461181e565b610559565b61018d61021c3660046118b3565b610615565b61018d61022f3660046119ac565b6106a0565b61018d7f4b4633c3c305de33d5d9cf70f2712f26961648cd68d020c2556a9e43be58051d81565b61018d61026936600461181e565b60016020525f908152604090205481565b61028261073b565b60405161012e9796959493929190611a11565b61029d610873565b60405165ffffffffffff909116815260200161012e565b61018d6102c2366004611ad1565b610885565b6102ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b60605f805461032190611b10565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611b10565b80156103985780601f1061036f57610100808354040283529160200191610398565b820191905f5260205f20905b81548152906001019060200180831161037b57829003601f168201915b5050505050905090565b5f6103b03386868686610c37565b95945050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146103ee576103e9610deb565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff89165f908152600160205260408120546104538b61044b818d8d8d8d888e6106a0565b878787610e85565b73ffffffffffffffffffffffffffffffffffffffff8b165f9081526001602081905260409091209101905561048785610ea1565b6104948a8a8a8a8a610c37565b9a9950505050505050505050565b60606103e9610ee7565b73ffffffffffffffffffffffffffffffffffffffff81165f818152600260205260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919290916370a0823190602401602060405180830381865afa158015610525573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105499190611b61565b6105539190611ba5565b92915050565b5f80610563610873565b65ffffffffffff169050610576836104ac565b9150808373ffffffffffffffffffffffffffffffffffffffff167fa8ee3e5c0b1fd681042265199e8b28cf463b81bc21f6658d4c73e741aeabd3f5846040516105c191815260200190565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff9092165f81815260036020908152604080832095835294815284822080548501905591815260029091529190912080548201905590565b73ffffffffffffffffffffffffffffffffffffffff87165f908152600160205260408120546106538961064d818b8b8b8b888c6106a0565b85610f07565b73ffffffffffffffffffffffffffffffffffffffff89165f9081526001602081905260409091209101905561068783610ea1565b6106948888888888610c37565b98975050505050505050565b604080517f4b4633c3c305de33d5d9cf70f2712f26961648cd68d020c2556a9e43be58051d602082015273ffffffffffffffffffffffffffffffffffffffff808a169282019290925281881660608201526080810187905260a0810186905290841660c082015260e0810183905261010081018290525f90610694906101200160405160208183030381529060405280519060200120610f58565b5f606080828080838146308280604051908082528060200260200182016040528015610771578160200160208202803683370190505b507f0f0000000000000000000000000000000000000000000000000000000000000094939291908480546107a490611b10565b80601f01602080910402602001604051908101604052809291908181526020018280546107d090611b10565b801561081b5780601f106107f25761010080835404028352916020019161081b565b820191905f5260205f20905b8154815290600101906020018083116107fe57829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61087c610fb9565b61ffff16905090565b5f8061088f610873565b65ffffffffffff1690508083106108e1576040517f3260d32f00000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044015b60405180910390fd5b82841115610925576040517fcab6279d00000000000000000000000000000000000000000000000000000000815260048101859052602481018490526044016108d8565b6040517f0d33fbbd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052604482018590525f917f000000000000000000000000000000000000000000000000000000000000000090911690630d33fbbd906064015f60405180830381865afa1580156109c0573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a059190810190611bb8565b6040517f3cb1838f00000000000000000000000000000000000000000000000000000000815260048101879052602481018690529091505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690633cb1838f906044015f60405180830381865afa158015610a99573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ade9190810190611bb8565b90505f610aeb8787611ba5565b610af6906001611c4d565b90505f5b81811015610c22575f848281518110610b1557610b15611c60565b60200260200101519050805f03610b2c5750610c1a565b73ffffffffffffffffffffffffffffffffffffffff808c165f9081526004602090815260408083208d870184528252808320938e168352929052205460ff1615610b765750610c1a565b838281518110610b8857610b88611c60565b6020026020010151633b9aca008260035f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f868e610be09190611c4d565b81526020019081526020015f2054610bf89190611c8d565b610c029190611c8d565b610c0c9190611ca4565b610c169088611c4d565b9650505b600101610afa565b50633b9aca0085049998505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610c85576040517f5209852900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9185878686610885565b9050835b610ca0846001611c4d565b811015610d125773ffffffffffffffffffffffffffffffffffffffff8087165f9081526004602090815260408083208584528252808320938b1683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915501610c95565b5073ffffffffffffffffffffffffffffffffffffffff85165f9081526002602052604081208054839290610d47908490611ba5565b9091555050604080518581526020810185905290810182905273ffffffffffffffffffffffffffffffffffffffff80881691908716907f9137e112a187039f8a3291c0a66fce97153d25ec42036e82360d5d0106d19a6e9060600160405180910390a3610db5858383610fe1565b6103b0576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051610e1d9190611cdc565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b610e9a610e958686868686611078565b6110b4565b5050505050565b80421115610ee4576040517ff88f0490000000000000000000000000000000000000000000000000000000008152600481018290524260248201526044016108d8565b50565b60606040518060a0016040528060658152602001611e3160659139905090565b5f610f13848484611278565b90505f816005811115610f2857610f28611db1565b03610f335750505050565b610f3e8484846112bc565b15610f495750505050565b610f52816110b4565b50505050565b5f610f616103b9565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6213c680610fcc63661bd35042611ba5565b610fd69190611ca4565b6103e9906001611c4d565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790525f90611070908590611404565b949350505050565b5f805f611087878787876114b8565b90925090505f82600581111561109f5761109f611db1565b146110aa5781610694565b61069488826115c5565b5f8160058111156110c7576110c7611db1565b036110cf5750565b60018160058111156110e3576110e3611db1565b0361111a576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561112e5761112e611db1565b03611165576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381600581111561117957611179611db1565b036111b0576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156111c4576111c4611db1565b036111fb576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561120f5761120f611db1565b03611246576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6112858585611609565b90925090505f82600581111561129d5761129d611db1565b146112a857816112b2565b6112b286826115c5565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1685856040516024016112e9929190611dde565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e000000000000000000000000000000000000000000000000000000001790525161136a9190611df6565b5f60405180830381855afa9150503d805f81146113a2576040519150601f19603f3d011682016040523d82523d5f602084013e6113a7565b606091505b50915091508180156113bb57506020815110155b80156112b2575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906113f99083016020908101908401611b61565b149695505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61142857505f610553565b60608373ffffffffffffffffffffffffffffffffffffffff168360405161144f9190611df6565b5f604051808303815f865af19150503d805f8114611488576040519150601f19603f3d011682016040523d82523d5f602084013e61148d565b606091505b5090925090508180156110705750805115806110705750808060200190518101906110709190611e11565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156114ed5750600390505f6115bc565b8460ff16601b1415801561150557508460ff16601c14155b156115155750600490505f6115bc565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611565573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156115b3575f816115b7565b60015f5b915091505b94509492505050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611600576005611602565b5f5b9392505050565b5f80825160411461161f5750600290505f611646565b6020830151604084015160608501515f1a919061163e878484846114b8565b945094505050505b9250929050565b5f5b8381101561166757818101518382015260200161164f565b50505f910152565b5f815180845261168681602086016020860161164d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f611602602083018461166f565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ed575f80fd5b919050565b5f805f60608486031215611704575f80fd5b61170d846116ca565b925060208401359150611722604085016116ca565b90509250925092565b5f805f806080858703121561173e575f80fd5b611747856116ca565b93506020850135925060408501359150611763606086016116ca565b905092959194509250565b5f806040838503121561177f575f80fd5b611788836116ca565b946020939093013593505050565b5f805f805f805f805f6101208a8c0312156117af575f80fd5b6117b88a6116ca565b98506117c660208b016116ca565b975060408a0135965060608a013595506117e260808b016116ca565b945060a08a0135935060c08a013560ff811681146117fe575f80fd5b8093505060e08a013591506101008a013590509295985092959850929598565b5f6020828403121561182e575f80fd5b611602826116ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156118ab576118ab611837565b604052919050565b5f805f805f805f60e0888a0312156118c9575f80fd5b6118d2886116ca565b965060206118e1818a016116ca565b965060408901359550606089013594506118fd60808a016116ca565b935060a0890135925060c089013567ffffffffffffffff80821115611920575f80fd5b818b0191508b601f830112611933575f80fd5b81358181111561194557611945611837565b611975847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611864565b91508082528c8482850101111561198a575f80fd5b80848401858401375f8482840101525080935050505092959891949750929550565b5f805f805f805f60e0888a0312156119c2575f80fd5b6119cb886116ca565b96506119d9602089016116ca565b955060408801359450606088013593506119f5608089016116ca565b925060a0880135915060c0880135905092959891949750929550565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152611a4d60e084018a61166f565b8381036040850152611a5f818a61166f565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015611abf57835183529284019291840191600101611aa3565b50909c9b505050505050505050505050565b5f805f8060808587031215611ae4575f80fd5b611aed856116ca565b9350611afb602086016116ca565b93969395505050506040820135916060013590565b600181811c90821680611b2457607f821691505b602082108103611b5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215611b71575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561055357610553611b78565b5f6020808385031215611bc9575f80fd5b825167ffffffffffffffff80821115611be0575f80fd5b818501915085601f830112611bf3575f80fd5b815181811115611c0557611c05611837565b8060051b9150611c16848301611864565b8181529183018401918481019088841115611c2f575f80fd5b938501935b8385101561069457845182529385019390850190611c34565b8082018082111561055357610553611b78565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761055357610553611b78565b5f82611cd7577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083545f60018260011c91506001831680611cf957607f831692505b60208084108203611d31577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015611d455760018114611d7857611da3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650611da3565b5f8a8152602090205f5b86811015611d9b5781548b820152908501908301611d82565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f611070604083018461166f565b5f8251611e0781846020870161164d565b9190910192915050565b5f60208284031215611e21575f80fd5b81518015158114611602575f80fdfe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220ef9429e1c9b41d3daf14dabe78bc1ea7bd3754d3f8ca4a803c5679ccec5df6eb64736f6c63430008170033" } diff --git a/modules/m-core/bytecode/EmergencyGovernor.json b/modules/m-core/bytecode/EmergencyGovernor.json index ec3ee687..a9c1a8e8 100644 --- a/modules/m-core/bytecode/EmergencyGovernor.json +++ b/modules/m-core/bytecode/EmergencyGovernor.json @@ -1 +1 @@ -{ "bytecode": "0x61014060405234801562000011575f80fd5b5060405162004b1338038062004b138339810160408190526200003491620002ea565b60408051808201909152601181527022b6b2b933b2b731bca3b7bb32b93737b960791b602082015285828282815f6200006e8282620003fd565b50466080526200007d62000153565b60a052506001600160a01b03811660c0819052620000ae576040516316d3e4a360e01b815260040160405180910390fd5b50620000bc905081620001ef565b5050506001600160a01b038416610120819052620000ed5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03831660e08190526200011a5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0382166101008190526200014857604051637301473d60e11b815260040160405180910390fd5b505050505062000543565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001879190620004c9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127108161ffff16118062000209575061010f61ffff8216105b15620002425760405163073543c360e31b815261ffff8216600482015261010f6024820152612710604482015260640160405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a16003805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b0381168114620002e5575f80fd5b919050565b5f805f805f60a08688031215620002ff575f80fd5b6200030a86620002ce565b94506200031a60208701620002ce565b93506200032a60408701620002ce565b92506200033a60608701620002ce565b9150608086015161ffff8116811462000351575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200038857607f821691505b602082108103620003a757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003f857805f5260205f20601f840160051c81016020851015620003d45750805b601f840160051c820191505b81811015620003f5575f8155600101620003e0565b50505b505050565b81516001600160401b038111156200041957620004196200035f565b62000431816200042a845462000373565b84620003ad565b602080601f83116001811462000467575f84156200044f5750858301515b5f19600386901b1c1916600185901b178555620004c1565b5f85815260208120601f198616915b82811015620004975788860151825594840194600190910190840162000476565b5085821015620004b557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620004d88162000373565b60018281168015620004f35760018114620005095762000537565b60ff198416875282151583028701945062000537565b875f526020805f205f5b858110156200052e5781548a82015290840190820162000513565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051614550620005c35f395f8181610839015261147601525f818161063501526115b501525f81816104f401528181610c99015281816121fa015261227501525f818161047b01528181610b9b0152818161183e01526120fe01525f610f3d01525f610f0d01526145505ff3fe608060405260043610610371575f3560e01c8063849a83b4116101c8578063c01f9e37116100fd578063d11d19c21161009d578063eb9019d41161006d578063eb9019d414610b1c578063f046c64614610b3b578063fb999fcb14610b6e578063fc0c546a14610b8d575f80fd5b8063d11d19c214610a83578063d48d842314610ab6578063dd4e2ba514610ad5578063deaaa7cc14610ae9575f80fd5b8063c59057e4116100d8578063c59057e4146109f3578063c64d2ee614610a12578063c7f758a814610a31578063cee8770814610a64575f80fd5b8063c01f9e3714610992578063c0324da1146109b1578063c2ee3a08146109de575f80fd5b806396ccd67311610168578063a7713a7011610143578063a7713a701461092a578063b4d87a1214610942578063b577512514610961578063b58131b014610980575f80fd5b806396ccd673146108d857806397c3d334146108f75780639b9e9cf81461090b575f80fd5b80638df3227f116101a35780638df3227f146108285780638e9d8c341461085b57806391ddadf41461088e57806394eac995146108b9575f80fd5b8063849a83b4146107c357806384b0196e146107e25780638968eb0714610809575f80fd5b80633bccf4fd116102a9578063544ffc9c1161024957806364a38bf91161021957806364a38bf91461074757806370edcbc4146107665780637b3c71d3146107855780637d5e81e2146107a4575f80fd5b8063544ffc9c1461069557806355a73c53146106ea57806356781388146107095780635b18c26a14610728575f80fd5b80634bf5d7e9116102845780634bf5d7e9146106105780634d6d7441146106245780634d8e082514610657578063519c958714610676575f80fd5b80633bccf4fd1461057c5780633e4f49e61461059b57806343859632146105c7575f80fd5b806324b2c7b3116103145780632d63f693116102ef5780632d63f6931461051657806330717129146105355780633644e515146105545780633932abb114610568575f80fd5b806324b2c7b3146104b15780632656227d146104d05780632b20e397146104e3575f80fd5b80630dd320e91161034f5780630dd320e9146103de578063143489d0146103fd578063160d66ae1461046a5780631703a0181461049d575f80fd5b806302a251a31461037557806306fdde031461039c57806307a00330146103bd575b5f80fd5b348015610380575f80fd5b50610389610bbf565b6040519081526020015b60405180910390f35b3480156103a7575f80fd5b506103b0610bcc565b60405161039391906131be565b3480156103c8575f80fd5b506103dc6103d73660046131d0565b610c5b565b005b3480156103e9575f80fd5b506103896103f836600461335f565b610d0a565b348015610408575f80fd5b506104456104173660046133fb565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610393565b348015610475575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a8575f80fd5b50610389610dd4565b3480156104bc575f80fd5b506103896104cb366004613412565b610df1565b6103896104de366004613612565b610e09565b3480156104ee575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610521575f80fd5b506103896105303660046133fb565b610e5a565b348015610540575f80fd5b5061038961054f36600461369c565b610e82565b34801561055f575f80fd5b50610389610f0a565b348015610573575f80fd5b50610389610f5f565b348015610587575f80fd5b50610389610596366004613771565b610f66565b3480156105a6575f80fd5b506105ba6105b53660046133fb565b610f95565b6040516103939190613821565b3480156105d2575f80fd5b506106006105e136600461382f565b600260209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610393565b34801561061b575f80fd5b506103b06110f9565b34801561062f575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610662575f80fd5b50610389610671366004613859565b611103565b348015610681575f80fd5b506103dc61069036600461388b565b611113565b3480156106a0575f80fd5b506106cf6106af3660046133fb565b5f8181526001602081905260408220908101546002909101549093909250565b60408051938452602084019290925290820152606001610393565b3480156106f5575f80fd5b506103896107043660046138c4565b611134565b348015610714575f80fd5b506103896107233660046138c4565b611146565b348015610733575f80fd5b506103896107423660046138e5565b611161565b348015610752575f80fd5b50610389610761366004613949565b611193565b348015610771575f80fd5b50610389610780366004613949565b6111b5565b348015610790575f80fd5b5061038961079f3660046139ee565b6111f5565b3480156107af575f80fd5b506103896107be366004613a38565b611237565b3480156107ce575f80fd5b506103896107dd366004613412565b61124e565b3480156107ed575f80fd5b506107f66112ae565b6040516103939796959493929190613b0c565b348015610814575f80fd5b50610389610823366004613b94565b6113e6565b348015610833575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610866575f80fd5b506103897fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610899575f80fd5b506108a2611455565b60405165ffffffffffff9091168152602001610393565b3480156108c4575f80fd5b506103dc6108d3366004613c21565b61145e565b3480156108e3575f80fd5b506103896108f23660046139ee565b6114d9565b348015610902575f80fd5b50612710610389565b348015610916575f80fd5b50610389610925366004613c42565b6114e6565b348015610935575f80fd5b5060035461ffff16610389565b34801561094d575f80fd5b506103dc61095c36600461382f565b611568565b34801561096c575f80fd5b506103dc61097b3660046133fb565b61157e565b34801561098b575f80fd5b505f610389565b34801561099d575f80fd5b506103896109ac3660046133fb565b611624565b3480156109bc575f80fd5b506003546109cb9061ffff1681565b60405161ffff9091168152602001610393565b3480156109e9575f80fd5b5061038961271081565b3480156109fe575f80fd5b50610389610a0d366004613612565b61163e565b348015610a1d575f80fd5b50610389610a2c366004613cf6565b611661565b348015610a3c575f80fd5b50610a50610a4b3660046133fb565b6116b3565b604051610393989796959493929190613d69565b348015610a6f575f80fd5b50610389610a7e366004613dd2565b61176e565b348015610a8e575f80fd5b506103897f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610ac1575f80fd5b506103dc610ad036600461382f565b6117be565b348015610ae0575f80fd5b506103b06117d0565b348015610af4575f80fd5b506103897f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b27575f80fd5b50610389610b36366004613e4e565b6117f0565b348015610b46575f80fd5b506103897f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610b79575f80fd5b50610389610b883660046133fb565b6118a9565b348015610b98575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610445565b5f60015b61ffff16905090565b60605f8054610bda90613e76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690613e76565b8015610c515780601f10610c2857610100808354040283529160200191610c51565b820191905f5260205f20905b815481529060010190602001808311610c3457829003601f168201915b5050505050905090565b610c636118e4565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610cf0575f80fd5b505af1158015610d02573d5f803e3d5ffd5b505050505050565b5f610d6f87610d698888604051602001610d25929190613ec7565b604051602081830303815290604052805190602001208787604051602001610d4e929190613f07565b6040516020818303038152906040528051906020012061191f565b8461197b565b610dc987878787878267ffffffffffffffff811115610d9057610d90613259565b604051908082528060200260200182016040528015610dc357816020015b6060815260200190600190039081610dae5790505b506119cc565b979650505050505050565b5f610dec610de0611b19565b60035461ffff16611b22565b905090565b5f610dc93388888888610e04888a613f40565b6119cc565b5f610e15858585611b4c565b5f610e1e611b19565b9050610e50845f81518110610e3557610e35613fb0565b602002602001015182600184610e4b919061400a565b611cef565b9695505050505050565b5f818152600160208190526040822054610e78919061ffff1661400a565b61ffff1692915050565b5f610eeb89610d698a8a604051602001610e9d929190613ec7565b604051602081830303815290604052805190602001208989604051602001610ec6929190613f07565b60405160208183030381529060405280519060200120610ee68989611de3565b611ec6565b610efd8989898989610e04898b613f40565b9998505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610f3a57610dec611f1a565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610bc3565b5f610e50610f7f610f778888611fb4565b868686611ffb565b878760405180602001604052805f81525061201f565b5f818152600160205260408120805462010000900460ff1615610fbb5750600792915050565b805461ffff165f819003610ffb576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61100f61100a60018461400a565b6120ca565b90505f6001830161ffff16611022611b19565b61ffff1611159050815f03611049578061103d576006610e50565b60019695505050505050565b835477010000000000000000000000000000000000000000000000900461ffff16611074838261402c565b6127108660020154611086919061402c565b106110a45781611097576006610dc9565b6004979650505050505050565b6110b28361ffff831661402c565b6127108660010154856110c59190614043565b6110cf919061402c565b101580156110da5750815b156110ec575060019695505050505050565b5060039695505050505050565b6060610dec61217c565b5f61110d8261219c565b92915050565b61111b6118e4565b61112583836121ae565b61112f8382612229565b505050565b5f61113f8383611fb4565b9392505050565b5f61113f33848460405180602001604052805f81525061201f565b5f61117085610d698686611fb4565b61118a85858560405180602001604052805f81525061201f565b95945050505050565b5f61118a33868686868267ffffffffffffffff811115610d9057610d90613259565b5f61118a85856040516020016111cc929190613ec7565b604051602081830303815290604052805190602001208484604051602001610d4e929190613f07565b5f61118a33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f611244858585856122a4565b5095945050505050565b5f610dc98787604051602001611265929190613ec7565b60405160208183030381529060405280519060200120868660405160200161128e929190613f07565b60405160208183030381529060405280519060200120610ee68686611de3565b5f6060808280808381463082806040519080825280602002602001820160405280156112e4578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461131790613e76565b80601f016020809104026020016040519081016040528092919081815260200182805461134390613e76565b801561138e5780601f106113655761010080835404028352916020019161138e565b820191905f5260205f20905b81548152906001019060200180831161137157829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61144961142c610f778a8a604051602001611403929190613ec7565b604051602081830303815290604052805190602001208989604051602001610d4e929190613f07565b898989898267ffffffffffffffff811115610d9057610d90613259565b98975050505050505050565b5f610bc3611b19565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114cd576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d6816124f3565b50565b5f61118a85858585612602565b5f61155a61154c610f778c8c604051602001611503929190613ec7565b604051602081830303815290604052805190602001208b8b60405160200161152c929190613f07565b60405160208183030381529060405280519060200120610ee68b8b611de3565b8b8b8b8b610e048b8d613f40565b9a9950505050505050505050565b6115706118e4565b61157a8282612229565b5050565b6115866118e4565b6040517f10bf5068000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310bf5068906024015f604051808303815f87803b15801561160b575f80fd5b505af115801561161d573d5f803e3d5ffd5b5050505050565b5f81815260016020819052604082205461ffff1601610e78565b5f61118a835f8151811061165457611654613fb0565b602002602001015161219c565b5f61167287610d6988888888612602565b610dc987878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f818152600160205260408120805461ffff1691908190819081908190819081906116de8960010190565b61ffff1697506116ed8a610f95565b600182015460028301548354929950909750955073ffffffffffffffffffffffffffffffffffffffff6301000000820416945061174c9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b9250805f0160179054906101000a900461ffff16915050919395975091939597565b5f611449611781610f778a8a8a8a612602565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b6117c66118e4565b61157a82826121ae565b60606040518060600160405280602d8152602001614489602d9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611885573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f9190614056565b5f818152600160205260408120805461113f9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b33301461191d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f9061113f906080015b6040516020818303038152906040528051906020012061266c565b5f6119878484846126cd565b90505f81600581111561199c5761199c6137bb565b036119a75750505050565b6119b2848484612707565b156119bd5750505050565b6119c68161284f565b50505050565b5f84808203611a07576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611a4f576040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044015b60405180910390fd5b82518114611a965782516040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152611a46918391600401918252602082015260400190565b5f5b81811015611b0d57611b0389898984818110611ab657611ab6613fb0565b90506020020135888885818110611acf57611acf613fb0565b9050602002016020810190611ae4919061406d565b878581518110611af657611af6613fb0565b602002602001015161201f565b9250600101611a98565b50509695505050505050565b5f610dec612a13565b5f612710611b3461100a60018661400a565b611b429061ffff851661402c565b61113f9190614086565b8251600114611b87576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f81518110611bb057611bb0613fb0565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611c05576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114611c40576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f81518110611c5257611c52613fb0565b60200260200101515f14611c92576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600114611ccd576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112f815f81518110611ce257611ce2613fb0565b6020026020010151612a3b565b5f3415611d28576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f03611d65576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1610611db1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192611da3908590612c3b565b9050805f0361113f57611d65565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff811115611dff57611dff613259565b604051908082528060200260200182016040528015611e28578160200160208202803683370190505b5090505f5b82811015611e9457858582818110611e4757611e47613fb0565b9050602002810190611e5991906140be565b604051611e6792919061411f565b6040518091039020828281518110611e8157611e81613fb0565b6020908102919091010152600101611e2d565b5080604051602001611ea6919061412e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f90611f129060a001611960565b949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611f4c9190614163565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061113f90608001611960565b5f8061200986868686612daa565b925090506120168161284f565b50949350505050565b5f8061202a85610f95565b90506001816007811115612040576120406137bb565b1461207957806040517f88f40ea0000000000000000000000000000000000000000000000000000000008152600401611a469190613821565b5f858152600160205260409020546120bb9087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff91821601166117f0565b91506120168683878787612eb7565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015612158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d9190614056565b60606040518060a00160405280606581526020016144b660659139905090565b5f61110d826121a9613069565b613079565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610cd9565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610cd9565b5f806122b1868686611b4c565b6122b9613069565b90506122de845f815181106122d0576122d0613fb0565b602002602001015182613079565b5f8181526001602052604090205490925061ffff161561232a576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245382826040805160c08101825261ffff92831681525f6020808301828152338486019081526003548716606086019081526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561249257612492613259565b6040519080825280602002602001820160405280156124c557816020015b60608152602001906001900390816124b05790505b508987600181018b6040516124e2999897969594939291906142ae565b60405180910390a194509492505050565b6127108161ffff16118061250c575061010f61ffff8216105b15612559576040517f39aa1e1800000000000000000000000000000000000000000000000000000000815261ffff8216600482015261010f60248201526127106044820152606401611a46565b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f61118a7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b8686868660405161263b92919061411f565b60405190819003812061196094939291602001938452602084019290925260ff166040830152606082015260800190565b5f612675610f0a565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f6126da85856130cc565b90925090505f8260058111156126f2576126f26137bb565b146126fd5781610e50565b610e508682613110565b5f805f8573ffffffffffffffffffffffffffffffffffffffff16858560405160240161273492919061438a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516127b591906143a2565b5f60405180830381855afa9150503d805f81146127ed576040519150601f19603f3d011682016040523d82523d5f602084013e6127f2565b606091505b509150915081801561280657506020815110155b8015610e50575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906128449083016020908101908401614056565b149695505050505050565b5f816005811115612862576128626137bb565b0361286a5750565b600181600581111561287e5761287e6137bb565b036128b5576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160058111156128c9576128c96137bb565b03612900576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612914576129146137bb565b0361294b576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600481600581111561295f5761295f6137bb565b03612996576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058160058111156129aa576129aa6137bb565b036129e1576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680612a26636322c96242614043565b612a309190614086565b610dec9060016143bd565b5f612a45826143d0565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a1200000000000000000000000000000000000000000000000000000000148015612a9b5750604481145b158015612af657507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d842300000000000000000000000000000000000000000000000000000000148015612af45750604481145b155b8015612b5057507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c958700000000000000000000000000000000000000000000000000000000148015612b4e5750606481145b155b8015612baa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a0033000000000000000000000000000000000000000000000000000000000148015612ba85750604481145b155b8015612c0457507fffffffff0000000000000000000000000000000000000000000000000000000082167fb577512500000000000000000000000000000000000000000000000000000000148015612c025750602481145b155b1561112f576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612c468383613079565b5f81815260016020526040902080549192509061ffff848116911614612c6f575f91505061110d565b6004612c7a83610f95565b6007811115612c8b57612c8b6137bb565b14612c99575f91505061110d565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612cf69084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612d2591906143a2565b5f604051808303815f865af19150503d805f8114612d5e576040519150601f19603f3d011682016040523d82523d5f602084013e612d63565b606091505b509150915081612da157806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401611a4691906131be565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612ddf5750600390505f612eae565b8460ff16601b14158015612df757508460ff16601c14155b15612e075750600490505f612eae565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612e57573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615612ea5575f81612ea9565b60015f5b915091505b94509492505050565b835f03612ef0576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615612f59576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff166001811115612fc557612fc56137bb565b6001811115612fd657612fd66137bb565b03612ff7575f8381526001602081905260409091200180548501905561300e565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48484878560405161305a949392919061441f565b60405180910390a25050505050565b5f80613073611b19565b01905090565b5f82823060405160200161308f93929190614446565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f8082516041146130e25750600290505f613109565b6020830151604084015160608501515f1a919061310187848484612daa565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461314b57600561113f565b505f92915050565b5f5b8381101561316d578181015183820152602001613155565b50505f910152565b5f815180845261318c816020860160208601613153565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61113f6020830184613175565b5f80604083850312156131e1575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613213575f80fd5b919050565b5f8083601f840112613228575f80fd5b50813567ffffffffffffffff81111561323f575f80fd5b6020830191508360208260051b8501011115613109575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156132cd576132cd613259565b604052919050565b5f82601f8301126132e4575f80fd5b813567ffffffffffffffff8111156132fe576132fe613259565b61332f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613286565b818152846020838601011115613343575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613374575f80fd5b61337d876131f0565b9550602087013567ffffffffffffffff80821115613399575f80fd5b6133a58a838b01613218565b909750955060408901359150808211156133bd575f80fd5b6133c98a838b01613218565b909550935060608901359150808211156133e1575f80fd5b506133ee89828a016132d5565b9150509295509295509295565b5f6020828403121561340b575f80fd5b5035919050565b5f805f805f8060608789031215613427575f80fd5b863567ffffffffffffffff8082111561343e575f80fd5b61344a8a838b01613218565b90985096506020890135915080821115613462575f80fd5b61346e8a838b01613218565b90965094506040890135915080821115613486575f80fd5b5061349389828a01613218565b979a9699509497509295939492505050565b5f67ffffffffffffffff8211156134be576134be613259565b5060051b60200190565b5f82601f8301126134d7575f80fd5b813560206134ec6134e7836134a5565b613286565b8083825260208201915060208460051b87010193508684111561350d575f80fd5b602086015b8481101561353057613523816131f0565b8352918301918301613512565b509695505050505050565b5f82601f83011261354a575f80fd5b8135602061355a6134e7836134a5565b8083825260208201915060208460051b87010193508684111561357b575f80fd5b602086015b848110156135305780358352918301918301613580565b5f82601f8301126135a6575f80fd5b813560206135b66134e7836134a5565b82815260059290921b840181019181810190868411156135d4575f80fd5b8286015b8481101561353057803567ffffffffffffffff8111156135f6575f80fd5b6136048986838b01016132d5565b8452509183019183016135d8565b5f805f8060808587031215613625575f80fd5b843567ffffffffffffffff8082111561363c575f80fd5b613648888389016134c8565b9550602087013591508082111561365d575f80fd5b6136698883890161353b565b9450604087013591508082111561367e575f80fd5b5061368b87828801613597565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156136b3575f80fd5b6136bc896131f0565b9750602089013567ffffffffffffffff808211156136d8575f80fd5b6136e48c838d01613218565b909950975060408b01359150808211156136fc575f80fd5b6137088c838d01613218565b909750955060608b0135915080821115613720575f80fd5b61372c8c838d01613218565b909550935060808b0135915080821115613744575f80fd5b506137518b828c016132d5565b9150509295985092959890939650565b803560ff81168114613213575f80fd5b5f805f805f60a08688031215613785575f80fd5b8535945061379560208701613761565b93506137a360408701613761565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061381d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6020810161110d82846137e8565b5f8060408385031215613840575f80fd5b82359150613850602084016131f0565b90509250929050565b5f60208284031215613869575f80fd5b813567ffffffffffffffff81111561387f575f80fd5b611f12848285016132d5565b5f805f6060848603121561389d575f80fd5b833592506138ad602085016131f0565b91506138bb604085016131f0565b90509250925092565b5f80604083850312156138d5575f80fd5b8235915061385060208401613761565b5f805f80608085870312156138f8575f80fd5b613901856131f0565b93506020850135925061391660408601613761565b9150606085013567ffffffffffffffff811115613931575f80fd5b61393d878288016132d5565b91505092959194509250565b5f805f806040858703121561395c575f80fd5b843567ffffffffffffffff80821115613973575f80fd5b61397f88838901613218565b90965094506020870135915080821115613997575f80fd5b506139a487828801613218565b95989497509550505050565b5f8083601f8401126139c0575f80fd5b50813567ffffffffffffffff8111156139d7575f80fd5b602083019150836020828501011115613109575f80fd5b5f805f8060608587031215613a01575f80fd5b84359350613a1160208601613761565b9250604085013567ffffffffffffffff811115613a2c575f80fd5b6139a4878288016139b0565b5f805f8060808587031215613a4b575f80fd5b843567ffffffffffffffff80821115613a62575f80fd5b613a6e888389016134c8565b95506020870135915080821115613a83575f80fd5b613a8f8883890161353b565b94506040870135915080821115613aa4575f80fd5b613ab088838901613597565b93506060870135915080821115613ac5575f80fd5b5061393d878288016132d5565b5f815180845260208085019450602084015f5b83811015613b0157815187529582019590820190600101613ae5565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f613b4660e0830189613175565b8281036040840152613b588189613175565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c084015261155a8185613ad2565b5f805f805f805f60a0888a031215613baa575f80fd5b873567ffffffffffffffff80821115613bc1575f80fd5b613bcd8b838c01613218565b909950975060208a0135915080821115613be5575f80fd5b50613bf28a828b01613218565b9096509450613c05905060408901613761565b9250606088013591506080880135905092959891949750929550565b5f60208284031215613c31575f80fd5b813561ffff8116811461113f575f80fd5b5f805f805f805f805f60c08a8c031215613c5a575f80fd5b893567ffffffffffffffff80821115613c71575f80fd5b613c7d8d838e01613218565b909b50995060208c0135915080821115613c95575f80fd5b613ca18d838e01613218565b909950975060408c0135915080821115613cb9575f80fd5b50613cc68c828d01613218565b9096509450613cd9905060608b01613761565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a08789031215613d0b575f80fd5b613d14876131f0565b955060208701359450613d2960408801613761565b9350606087013567ffffffffffffffff80821115613d45575f80fd5b613d518a838b016139b0565b909550935060808901359150808211156133e1575f80fd5b65ffffffffffff8981168252881660208201526101008101613d8e60408301896137e8565b6060820196909652608081019490945273ffffffffffffffffffffffffffffffffffffffff9290921660a084015260c083015261ffff1660e0909101529392505050565b5f805f805f805f60c0888a031215613de8575f80fd5b87359650613df860208901613761565b9550604088013567ffffffffffffffff811115613e13575f80fd5b613e1f8a828b016139b0565b9096509450613e32905060608901613761565b92506080880135915060a0880135905092959891949750929550565b5f8060408385031215613e5f575f80fd5b613e68836131f0565b946020939093013593505050565b600181811c90821680613e8a57607f821691505b602082108103613ec1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613ef4575f80fd5b8260051b80858437919091019392505050565b5f8184825b85811015613f355760ff613f1f83613761565b1683526020928301929190910190600101613f0c565b509095945050505050565b5f613f4d6134e7846134a5565b80848252602080830192508560051b850136811115613f6a575f80fd5b855b81811015613fa457803567ffffffffffffffff811115613f8a575f80fd5b613f9636828a016132d5565b865250938201938201613f6c565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff82811682821603908082111561402557614025613fdd565b5092915050565b808202811582820484141761110d5761110d613fdd565b8181038181111561110d5761110d613fdd565b5f60208284031215614066575f80fd5b5051919050565b5f6020828403121561407d575f80fd5b61113f82613761565b5f826140b9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140f1575f80fd5b83018035915067ffffffffffffffff82111561410b575f80fd5b602001915036819003821315613109575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b838110156141575781518552938201939082019060010161413b565b50929695505050505050565b5f8083545f60018260011c9150600183168061418057607f831692505b602080841082036141b8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b8180156141cc57600181146141ff5761422a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284151585028901965061422a565b5f8a8152602090205f5b868110156142225781548b820152908501908301614209565b505084890196505b509498975050505050505050565b5f8282518085526020808601955060208260051b840101602086015f5b848110156142a1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261428f838351613175565b98840198925090830190600101614255565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b818110156143125784518316865294830194938301936001016142f4565b50505050508281036060840152614329818a613ad2565b9050828103608084015261433d8189614238565b905082810360a08401526143518188614238565b61ffff871660c0850152905061ffff851660e084015282810361010084015261437a8185613175565b9c9b505050505050505050505050565b828152604060208201525f611f126040830184613175565b5f82516143b3818460208701613153565b9190910192915050565b8082018082111561110d5761110d613fdd565b5f815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156144175780818460040360031b1b83161693505b505050919050565b84815260ff84166020820152826040820152608060608201525f610e506080830184613175565b606081525f6144586060830186613175565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff8316604083015294935050505056fe737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d71756f72756d6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220d596a961f0c33c466fe8ae6c3e7e566bd4ddbd11f6d912f1e0cf1c9fb213d74464736f6c63430008170033" } +{ "bytecode": "0x61014060405234801562000011575f80fd5b5060405162004b1338038062004b138339810160408190526200003491620002ea565b60408051808201909152601181527022b6b2b933b2b731bca3b7bb32b93737b960791b602082015285828282815f6200006e8282620003fd565b50466080526200007d62000153565b60a052506001600160a01b03811660c0819052620000ae576040516316d3e4a360e01b815260040160405180910390fd5b50620000bc905081620001ef565b5050506001600160a01b038416610120819052620000ed5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03831660e08190526200011a5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0382166101008190526200014857604051637301473d60e11b815260040160405180910390fd5b505050505062000543565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001879190620004c9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127108161ffff16118062000209575061010f61ffff8216105b15620002425760405163073543c360e31b815261ffff8216600482015261010f6024820152612710604482015260640160405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a16003805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b0381168114620002e5575f80fd5b919050565b5f805f805f60a08688031215620002ff575f80fd5b6200030a86620002ce565b94506200031a60208701620002ce565b93506200032a60408701620002ce565b92506200033a60608701620002ce565b9150608086015161ffff8116811462000351575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200038857607f821691505b602082108103620003a757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003f857805f5260205f20601f840160051c81016020851015620003d45750805b601f840160051c820191505b81811015620003f5575f8155600101620003e0565b50505b505050565b81516001600160401b038111156200041957620004196200035f565b62000431816200042a845462000373565b84620003ad565b602080601f83116001811462000467575f84156200044f5750858301515b5f19600386901b1c1916600185901b178555620004c1565b5f85815260208120601f198616915b82811015620004975788860151825594840194600190910190840162000476565b5085821015620004b557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620004d88162000373565b60018281168015620004f35760018114620005095762000537565b60ff198416875282151583028701945062000537565b875f526020805f205f5b858110156200052e5781548a82015290840190820162000513565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051614550620005c35f395f8181610839015261147601525f818161063501526115b501525f81816104f401528181610c99015281816121fa015261227501525f818161047b01528181610b9b0152818161183e01526120fe01525f610f3d01525f610f0d01526145505ff3fe608060405260043610610371575f3560e01c8063849a83b4116101c8578063c01f9e37116100fd578063d11d19c21161009d578063eb9019d41161006d578063eb9019d414610b1c578063f046c64614610b3b578063fb999fcb14610b6e578063fc0c546a14610b8d575f80fd5b8063d11d19c214610a83578063d48d842314610ab6578063dd4e2ba514610ad5578063deaaa7cc14610ae9575f80fd5b8063c59057e4116100d8578063c59057e4146109f3578063c64d2ee614610a12578063c7f758a814610a31578063cee8770814610a64575f80fd5b8063c01f9e3714610992578063c0324da1146109b1578063c2ee3a08146109de575f80fd5b806396ccd67311610168578063a7713a7011610143578063a7713a701461092a578063b4d87a1214610942578063b577512514610961578063b58131b014610980575f80fd5b806396ccd673146108d857806397c3d334146108f75780639b9e9cf81461090b575f80fd5b80638df3227f116101a35780638df3227f146108285780638e9d8c341461085b57806391ddadf41461088e57806394eac995146108b9575f80fd5b8063849a83b4146107c357806384b0196e146107e25780638968eb0714610809575f80fd5b80633bccf4fd116102a9578063544ffc9c1161024957806364a38bf91161021957806364a38bf91461074757806370edcbc4146107665780637b3c71d3146107855780637d5e81e2146107a4575f80fd5b8063544ffc9c1461069557806355a73c53146106ea57806356781388146107095780635b18c26a14610728575f80fd5b80634bf5d7e9116102845780634bf5d7e9146106105780634d6d7441146106245780634d8e082514610657578063519c958714610676575f80fd5b80633bccf4fd1461057c5780633e4f49e61461059b57806343859632146105c7575f80fd5b806324b2c7b3116103145780632d63f693116102ef5780632d63f6931461051657806330717129146105355780633644e515146105545780633932abb114610568575f80fd5b806324b2c7b3146104b15780632656227d146104d05780632b20e397146104e3575f80fd5b80630dd320e91161034f5780630dd320e9146103de578063143489d0146103fd578063160d66ae1461046a5780631703a0181461049d575f80fd5b806302a251a31461037557806306fdde031461039c57806307a00330146103bd575b5f80fd5b348015610380575f80fd5b50610389610bbf565b6040519081526020015b60405180910390f35b3480156103a7575f80fd5b506103b0610bcc565b60405161039391906131be565b3480156103c8575f80fd5b506103dc6103d73660046131d0565b610c5b565b005b3480156103e9575f80fd5b506103896103f836600461335f565b610d0a565b348015610408575f80fd5b506104456104173660046133fb565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610393565b348015610475575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a8575f80fd5b50610389610dd4565b3480156104bc575f80fd5b506103896104cb366004613412565b610df1565b6103896104de366004613612565b610e09565b3480156104ee575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610521575f80fd5b506103896105303660046133fb565b610e5a565b348015610540575f80fd5b5061038961054f36600461369c565b610e82565b34801561055f575f80fd5b50610389610f0a565b348015610573575f80fd5b50610389610f5f565b348015610587575f80fd5b50610389610596366004613771565b610f66565b3480156105a6575f80fd5b506105ba6105b53660046133fb565b610f95565b6040516103939190613821565b3480156105d2575f80fd5b506106006105e136600461382f565b600260209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610393565b34801561061b575f80fd5b506103b06110f9565b34801561062f575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610662575f80fd5b50610389610671366004613859565b611103565b348015610681575f80fd5b506103dc61069036600461388b565b611113565b3480156106a0575f80fd5b506106cf6106af3660046133fb565b5f8181526001602081905260408220908101546002909101549093909250565b60408051938452602084019290925290820152606001610393565b3480156106f5575f80fd5b506103896107043660046138c4565b611134565b348015610714575f80fd5b506103896107233660046138c4565b611146565b348015610733575f80fd5b506103896107423660046138e5565b611161565b348015610752575f80fd5b50610389610761366004613949565b611193565b348015610771575f80fd5b50610389610780366004613949565b6111b5565b348015610790575f80fd5b5061038961079f3660046139ee565b6111f5565b3480156107af575f80fd5b506103896107be366004613a38565b611237565b3480156107ce575f80fd5b506103896107dd366004613412565b61124e565b3480156107ed575f80fd5b506107f66112ae565b6040516103939796959493929190613b0c565b348015610814575f80fd5b50610389610823366004613b94565b6113e6565b348015610833575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610866575f80fd5b506103897fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610899575f80fd5b506108a2611455565b60405165ffffffffffff9091168152602001610393565b3480156108c4575f80fd5b506103dc6108d3366004613c21565b61145e565b3480156108e3575f80fd5b506103896108f23660046139ee565b6114d9565b348015610902575f80fd5b50612710610389565b348015610916575f80fd5b50610389610925366004613c42565b6114e6565b348015610935575f80fd5b5060035461ffff16610389565b34801561094d575f80fd5b506103dc61095c36600461382f565b611568565b34801561096c575f80fd5b506103dc61097b3660046133fb565b61157e565b34801561098b575f80fd5b505f610389565b34801561099d575f80fd5b506103896109ac3660046133fb565b611624565b3480156109bc575f80fd5b506003546109cb9061ffff1681565b60405161ffff9091168152602001610393565b3480156109e9575f80fd5b5061038961271081565b3480156109fe575f80fd5b50610389610a0d366004613612565b61163e565b348015610a1d575f80fd5b50610389610a2c366004613cf6565b611661565b348015610a3c575f80fd5b50610a50610a4b3660046133fb565b6116b3565b604051610393989796959493929190613d69565b348015610a6f575f80fd5b50610389610a7e366004613dd2565b61176e565b348015610a8e575f80fd5b506103897f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610ac1575f80fd5b506103dc610ad036600461382f565b6117be565b348015610ae0575f80fd5b506103b06117d0565b348015610af4575f80fd5b506103897f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b27575f80fd5b50610389610b36366004613e4e565b6117f0565b348015610b46575f80fd5b506103897f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610b79575f80fd5b50610389610b883660046133fb565b6118a9565b348015610b98575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610445565b5f60015b61ffff16905090565b60605f8054610bda90613e76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690613e76565b8015610c515780601f10610c2857610100808354040283529160200191610c51565b820191905f5260205f20905b815481529060010190602001808311610c3457829003601f168201915b5050505050905090565b610c636118e4565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610cf0575f80fd5b505af1158015610d02573d5f803e3d5ffd5b505050505050565b5f610d6f87610d698888604051602001610d25929190613ec7565b604051602081830303815290604052805190602001208787604051602001610d4e929190613f07565b6040516020818303038152906040528051906020012061191f565b8461197b565b610dc987878787878267ffffffffffffffff811115610d9057610d90613259565b604051908082528060200260200182016040528015610dc357816020015b6060815260200190600190039081610dae5790505b506119cc565b979650505050505050565b5f610dec610de0611b19565b60035461ffff16611b22565b905090565b5f610dc93388888888610e04888a613f40565b6119cc565b5f610e15858585611b4c565b5f610e1e611b19565b9050610e50845f81518110610e3557610e35613fb0565b602002602001015182600184610e4b919061400a565b611cef565b9695505050505050565b5f818152600160208190526040822054610e78919061ffff1661400a565b61ffff1692915050565b5f610eeb89610d698a8a604051602001610e9d929190613ec7565b604051602081830303815290604052805190602001208989604051602001610ec6929190613f07565b60405160208183030381529060405280519060200120610ee68989611de3565b611ec6565b610efd8989898989610e04898b613f40565b9998505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610f3a57610dec611f1a565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610bc3565b5f610e50610f7f610f778888611fb4565b868686611ffb565b878760405180602001604052805f81525061201f565b5f818152600160205260408120805462010000900460ff1615610fbb5750600792915050565b805461ffff165f819003610ffb576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61100f61100a60018461400a565b6120ca565b90505f6001830161ffff16611022611b19565b61ffff1611159050815f03611049578061103d576006610e50565b60019695505050505050565b835477010000000000000000000000000000000000000000000000900461ffff16611074838261402c565b6127108660020154611086919061402c565b106110a45781611097576006610dc9565b6004979650505050505050565b6110b28361ffff831661402c565b6127108660010154856110c59190614043565b6110cf919061402c565b101580156110da5750815b156110ec575060019695505050505050565b5060039695505050505050565b6060610dec61217c565b5f61110d8261219c565b92915050565b61111b6118e4565b61112583836121ae565b61112f8382612229565b505050565b5f61113f8383611fb4565b9392505050565b5f61113f33848460405180602001604052805f81525061201f565b5f61117085610d698686611fb4565b61118a85858560405180602001604052805f81525061201f565b95945050505050565b5f61118a33868686868267ffffffffffffffff811115610d9057610d90613259565b5f61118a85856040516020016111cc929190613ec7565b604051602081830303815290604052805190602001208484604051602001610d4e929190613f07565b5f61118a33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f611244858585856122a4565b5095945050505050565b5f610dc98787604051602001611265929190613ec7565b60405160208183030381529060405280519060200120868660405160200161128e929190613f07565b60405160208183030381529060405280519060200120610ee68686611de3565b5f6060808280808381463082806040519080825280602002602001820160405280156112e4578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461131790613e76565b80601f016020809104026020016040519081016040528092919081815260200182805461134390613e76565b801561138e5780601f106113655761010080835404028352916020019161138e565b820191905f5260205f20905b81548152906001019060200180831161137157829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61144961142c610f778a8a604051602001611403929190613ec7565b604051602081830303815290604052805190602001208989604051602001610d4e929190613f07565b898989898267ffffffffffffffff811115610d9057610d90613259565b98975050505050505050565b5f610bc3611b19565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114cd576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d6816124f3565b50565b5f61118a85858585612602565b5f61155a61154c610f778c8c604051602001611503929190613ec7565b604051602081830303815290604052805190602001208b8b60405160200161152c929190613f07565b60405160208183030381529060405280519060200120610ee68b8b611de3565b8b8b8b8b610e048b8d613f40565b9a9950505050505050505050565b6115706118e4565b61157a8282612229565b5050565b6115866118e4565b6040517f10bf5068000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310bf5068906024015f604051808303815f87803b15801561160b575f80fd5b505af115801561161d573d5f803e3d5ffd5b5050505050565b5f81815260016020819052604082205461ffff1601610e78565b5f61118a835f8151811061165457611654613fb0565b602002602001015161219c565b5f61167287610d6988888888612602565b610dc987878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f818152600160205260408120805461ffff1691908190819081908190819081906116de8960010190565b61ffff1697506116ed8a610f95565b600182015460028301548354929950909750955073ffffffffffffffffffffffffffffffffffffffff6301000000820416945061174c9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b9250805f0160179054906101000a900461ffff16915050919395975091939597565b5f611449611781610f778a8a8a8a612602565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b6117c66118e4565b61157a82826121ae565b60606040518060600160405280602d81526020016144ee602d9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611885573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f9190614056565b5f818152600160205260408120805461113f9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b33301461191d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f9061113f906080015b6040516020818303038152906040528051906020012061266c565b5f6119878484846126cd565b90505f81600581111561199c5761199c6137bb565b036119a75750505050565b6119b2848484612707565b156119bd5750505050565b6119c68161284f565b50505050565b5f84808203611a07576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611a4f576040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044015b60405180910390fd5b82518114611a965782516040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152611a46918391600401918252602082015260400190565b5f5b81811015611b0d57611b0389898984818110611ab657611ab6613fb0565b90506020020135888885818110611acf57611acf613fb0565b9050602002016020810190611ae4919061406d565b878581518110611af657611af6613fb0565b602002602001015161201f565b9250600101611a98565b50509695505050505050565b5f610dec612a13565b5f612710611b3461100a60018661400a565b611b429061ffff851661402c565b61113f9190614086565b8251600114611b87576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f81518110611bb057611bb0613fb0565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611c05576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114611c40576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f81518110611c5257611c52613fb0565b60200260200101515f14611c92576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600114611ccd576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112f815f81518110611ce257611ce2613fb0565b6020026020010151612a3b565b5f3415611d28576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f03611d65576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1610611db1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192611da3908590612c3b565b9050805f0361113f57611d65565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff811115611dff57611dff613259565b604051908082528060200260200182016040528015611e28578160200160208202803683370190505b5090505f5b82811015611e9457858582818110611e4757611e47613fb0565b9050602002810190611e5991906140be565b604051611e6792919061411f565b6040518091039020828281518110611e8157611e81613fb0565b6020908102919091010152600101611e2d565b5080604051602001611ea6919061412e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f90611f129060a001611960565b949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611f4c9190614163565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061113f90608001611960565b5f8061200986868686612daa565b925090506120168161284f565b50949350505050565b5f8061202a85610f95565b90506001816007811115612040576120406137bb565b1461207957806040517f88f40ea0000000000000000000000000000000000000000000000000000000008152600401611a469190613821565b5f858152600160205260409020546120bb9087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff91821601166117f0565b91506120168683878787612eb7565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015612158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d9190614056565b60606040518060a001604052806065815260200161448960659139905090565b5f61110d826121a9613069565b613079565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610cd9565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610cd9565b5f806122b1868686611b4c565b6122b9613069565b90506122de845f815181106122d0576122d0613fb0565b602002602001015182613079565b5f8181526001602052604090205490925061ffff161561232a576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245382826040805160c08101825261ffff92831681525f6020808301828152338486019081526003548716606086019081526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561249257612492613259565b6040519080825280602002602001820160405280156124c557816020015b60608152602001906001900390816124b05790505b508987600181018b6040516124e2999897969594939291906142ae565b60405180910390a194509492505050565b6127108161ffff16118061250c575061010f61ffff8216105b15612559576040517f39aa1e1800000000000000000000000000000000000000000000000000000000815261ffff8216600482015261010f60248201526127106044820152606401611a46565b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f61118a7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b8686868660405161263b92919061411f565b60405190819003812061196094939291602001938452602084019290925260ff166040830152606082015260800190565b5f612675610f0a565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f6126da85856130cc565b90925090505f8260058111156126f2576126f26137bb565b146126fd5781610e50565b610e508682613110565b5f805f8573ffffffffffffffffffffffffffffffffffffffff16858560405160240161273492919061438a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516127b591906143a2565b5f60405180830381855afa9150503d805f81146127ed576040519150601f19603f3d011682016040523d82523d5f602084013e6127f2565b606091505b509150915081801561280657506020815110155b8015610e50575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906128449083016020908101908401614056565b149695505050505050565b5f816005811115612862576128626137bb565b0361286a5750565b600181600581111561287e5761287e6137bb565b036128b5576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160058111156128c9576128c96137bb565b03612900576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612914576129146137bb565b0361294b576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600481600581111561295f5761295f6137bb565b03612996576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058160058111156129aa576129aa6137bb565b036129e1576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680612a2663661bd35042614043565b612a309190614086565b610dec9060016143bd565b5f612a45826143d0565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a1200000000000000000000000000000000000000000000000000000000148015612a9b5750604481145b158015612af657507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d842300000000000000000000000000000000000000000000000000000000148015612af45750604481145b155b8015612b5057507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c958700000000000000000000000000000000000000000000000000000000148015612b4e5750606481145b155b8015612baa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a0033000000000000000000000000000000000000000000000000000000000148015612ba85750604481145b155b8015612c0457507fffffffff0000000000000000000000000000000000000000000000000000000082167fb577512500000000000000000000000000000000000000000000000000000000148015612c025750602481145b155b1561112f576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612c468383613079565b5f81815260016020526040902080549192509061ffff848116911614612c6f575f91505061110d565b6004612c7a83610f95565b6007811115612c8b57612c8b6137bb565b14612c99575f91505061110d565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612cf69084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612d2591906143a2565b5f604051808303815f865af19150503d805f8114612d5e576040519150601f19603f3d011682016040523d82523d5f602084013e612d63565b606091505b509150915081612da157806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401611a4691906131be565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612ddf5750600390505f612eae565b8460ff16601b14158015612df757508460ff16601c14155b15612e075750600490505f612eae565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612e57573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615612ea5575f81612ea9565b60015f5b915091505b94509492505050565b835f03612ef0576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615612f59576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff166001811115612fc557612fc56137bb565b6001811115612fd657612fd66137bb565b03612ff7575f8381526001602081905260409091200180548501905561300e565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48484878560405161305a949392919061441f565b60405180910390a25050505050565b5f80613073611b19565b01905090565b5f82823060405160200161308f93929190614446565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f8082516041146130e25750600290505f613109565b6020830151604084015160608501515f1a919061310187848484612daa565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461314b57600561113f565b505f92915050565b5f5b8381101561316d578181015183820152602001613155565b50505f910152565b5f815180845261318c816020860160208601613153565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61113f6020830184613175565b5f80604083850312156131e1575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613213575f80fd5b919050565b5f8083601f840112613228575f80fd5b50813567ffffffffffffffff81111561323f575f80fd5b6020830191508360208260051b8501011115613109575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156132cd576132cd613259565b604052919050565b5f82601f8301126132e4575f80fd5b813567ffffffffffffffff8111156132fe576132fe613259565b61332f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613286565b818152846020838601011115613343575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613374575f80fd5b61337d876131f0565b9550602087013567ffffffffffffffff80821115613399575f80fd5b6133a58a838b01613218565b909750955060408901359150808211156133bd575f80fd5b6133c98a838b01613218565b909550935060608901359150808211156133e1575f80fd5b506133ee89828a016132d5565b9150509295509295509295565b5f6020828403121561340b575f80fd5b5035919050565b5f805f805f8060608789031215613427575f80fd5b863567ffffffffffffffff8082111561343e575f80fd5b61344a8a838b01613218565b90985096506020890135915080821115613462575f80fd5b61346e8a838b01613218565b90965094506040890135915080821115613486575f80fd5b5061349389828a01613218565b979a9699509497509295939492505050565b5f67ffffffffffffffff8211156134be576134be613259565b5060051b60200190565b5f82601f8301126134d7575f80fd5b813560206134ec6134e7836134a5565b613286565b8083825260208201915060208460051b87010193508684111561350d575f80fd5b602086015b8481101561353057613523816131f0565b8352918301918301613512565b509695505050505050565b5f82601f83011261354a575f80fd5b8135602061355a6134e7836134a5565b8083825260208201915060208460051b87010193508684111561357b575f80fd5b602086015b848110156135305780358352918301918301613580565b5f82601f8301126135a6575f80fd5b813560206135b66134e7836134a5565b82815260059290921b840181019181810190868411156135d4575f80fd5b8286015b8481101561353057803567ffffffffffffffff8111156135f6575f80fd5b6136048986838b01016132d5565b8452509183019183016135d8565b5f805f8060808587031215613625575f80fd5b843567ffffffffffffffff8082111561363c575f80fd5b613648888389016134c8565b9550602087013591508082111561365d575f80fd5b6136698883890161353b565b9450604087013591508082111561367e575f80fd5b5061368b87828801613597565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156136b3575f80fd5b6136bc896131f0565b9750602089013567ffffffffffffffff808211156136d8575f80fd5b6136e48c838d01613218565b909950975060408b01359150808211156136fc575f80fd5b6137088c838d01613218565b909750955060608b0135915080821115613720575f80fd5b61372c8c838d01613218565b909550935060808b0135915080821115613744575f80fd5b506137518b828c016132d5565b9150509295985092959890939650565b803560ff81168114613213575f80fd5b5f805f805f60a08688031215613785575f80fd5b8535945061379560208701613761565b93506137a360408701613761565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061381d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6020810161110d82846137e8565b5f8060408385031215613840575f80fd5b82359150613850602084016131f0565b90509250929050565b5f60208284031215613869575f80fd5b813567ffffffffffffffff81111561387f575f80fd5b611f12848285016132d5565b5f805f6060848603121561389d575f80fd5b833592506138ad602085016131f0565b91506138bb604085016131f0565b90509250925092565b5f80604083850312156138d5575f80fd5b8235915061385060208401613761565b5f805f80608085870312156138f8575f80fd5b613901856131f0565b93506020850135925061391660408601613761565b9150606085013567ffffffffffffffff811115613931575f80fd5b61393d878288016132d5565b91505092959194509250565b5f805f806040858703121561395c575f80fd5b843567ffffffffffffffff80821115613973575f80fd5b61397f88838901613218565b90965094506020870135915080821115613997575f80fd5b506139a487828801613218565b95989497509550505050565b5f8083601f8401126139c0575f80fd5b50813567ffffffffffffffff8111156139d7575f80fd5b602083019150836020828501011115613109575f80fd5b5f805f8060608587031215613a01575f80fd5b84359350613a1160208601613761565b9250604085013567ffffffffffffffff811115613a2c575f80fd5b6139a4878288016139b0565b5f805f8060808587031215613a4b575f80fd5b843567ffffffffffffffff80821115613a62575f80fd5b613a6e888389016134c8565b95506020870135915080821115613a83575f80fd5b613a8f8883890161353b565b94506040870135915080821115613aa4575f80fd5b613ab088838901613597565b93506060870135915080821115613ac5575f80fd5b5061393d878288016132d5565b5f815180845260208085019450602084015f5b83811015613b0157815187529582019590820190600101613ae5565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f613b4660e0830189613175565b8281036040840152613b588189613175565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c084015261155a8185613ad2565b5f805f805f805f60a0888a031215613baa575f80fd5b873567ffffffffffffffff80821115613bc1575f80fd5b613bcd8b838c01613218565b909950975060208a0135915080821115613be5575f80fd5b50613bf28a828b01613218565b9096509450613c05905060408901613761565b9250606088013591506080880135905092959891949750929550565b5f60208284031215613c31575f80fd5b813561ffff8116811461113f575f80fd5b5f805f805f805f805f60c08a8c031215613c5a575f80fd5b893567ffffffffffffffff80821115613c71575f80fd5b613c7d8d838e01613218565b909b50995060208c0135915080821115613c95575f80fd5b613ca18d838e01613218565b909950975060408c0135915080821115613cb9575f80fd5b50613cc68c828d01613218565b9096509450613cd9905060608b01613761565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a08789031215613d0b575f80fd5b613d14876131f0565b955060208701359450613d2960408801613761565b9350606087013567ffffffffffffffff80821115613d45575f80fd5b613d518a838b016139b0565b909550935060808901359150808211156133e1575f80fd5b65ffffffffffff8981168252881660208201526101008101613d8e60408301896137e8565b6060820196909652608081019490945273ffffffffffffffffffffffffffffffffffffffff9290921660a084015260c083015261ffff1660e0909101529392505050565b5f805f805f805f60c0888a031215613de8575f80fd5b87359650613df860208901613761565b9550604088013567ffffffffffffffff811115613e13575f80fd5b613e1f8a828b016139b0565b9096509450613e32905060608901613761565b92506080880135915060a0880135905092959891949750929550565b5f8060408385031215613e5f575f80fd5b613e68836131f0565b946020939093013593505050565b600181811c90821680613e8a57607f821691505b602082108103613ec1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613ef4575f80fd5b8260051b80858437919091019392505050565b5f8184825b85811015613f355760ff613f1f83613761565b1683526020928301929190910190600101613f0c565b509095945050505050565b5f613f4d6134e7846134a5565b80848252602080830192508560051b850136811115613f6a575f80fd5b855b81811015613fa457803567ffffffffffffffff811115613f8a575f80fd5b613f9636828a016132d5565b865250938201938201613f6c565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff82811682821603908082111561402557614025613fdd565b5092915050565b808202811582820484141761110d5761110d613fdd565b8181038181111561110d5761110d613fdd565b5f60208284031215614066575f80fd5b5051919050565b5f6020828403121561407d575f80fd5b61113f82613761565b5f826140b9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140f1575f80fd5b83018035915067ffffffffffffffff82111561410b575f80fd5b602001915036819003821315613109575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b838110156141575781518552938201939082019060010161413b565b50929695505050505050565b5f8083545f60018260011c9150600183168061418057607f831692505b602080841082036141b8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b8180156141cc57600181146141ff5761422a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284151585028901965061422a565b5f8a8152602090205f5b868110156142225781548b820152908501908301614209565b505084890196505b509498975050505050505050565b5f8282518085526020808601955060208260051b840101602086015f5b848110156142a1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261428f838351613175565b98840198925090830190600101614255565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b818110156143125784518316865294830194938301936001016142f4565b50505050508281036060840152614329818a613ad2565b9050828103608084015261433d8189614238565b905082810360a08401526143518188614238565b61ffff871660c0850152905061ffff851660e084015282810361010084015261437a8185613175565b9c9b505050505050505050505050565b828152604060208201525f611f126040830184613175565b5f82516143b3818460208701613153565b9190910192915050565b8082018082111561110d5761110d613fdd565b5f815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156144175780818460040360031b1b83161693505b505050919050565b84815260ff84166020820152826040820152608060608201525f610e506080830184613175565b606081525f6144586060830186613175565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff8316604083015294935050505056fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d71756f72756da26469706673582212206e4e4f61da996630edc3dbc3da375d7883f0096457851e1f33c6f873dd626fa564736f6c63430008170033" } diff --git a/modules/m-core/bytecode/EmergencyGovernorDeployer.json b/modules/m-core/bytecode/EmergencyGovernorDeployer.json index 10949f2c..db2b78b8 100644 --- a/modules/m-core/bytecode/EmergencyGovernorDeployer.json +++ b/modules/m-core/bytecode/EmergencyGovernorDeployer.json @@ -1 +1 @@ -{ "bytecode": "0x60c060405234801561000f575f80fd5b506040516154aa3803806154aa83398101604081905261002e916100a8565b6001600160a01b03821660a081905261005a5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03811660808190526100865760405163a8a93d6960e01b815260040160405180910390fd5b50506100d9565b80516001600160a01b03811681146100a3575f80fd5b919050565b5f80604083850312156100b9575f80fd5b6100c28361008d565b91506100d06020840161008d565b90509250929050565b60805160a05161539c61010e5f395f81816101030152818161015501526101bb01525f818160b501526101dd015261539c5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063777f14d91161004d578063777f14d9146100f65780638df3227f146100fe578063affed0e014610125575f80fd5b80631af0131c146100735780632b20e397146100b0578063585e78af146100d7575b5f80fd5b610086610081366004610809565b61013c565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100867f000000000000000000000000000000000000000000000000000000000000000081565b5f546100869073ffffffffffffffffffffffffffffffffffffffff1681565b6100866102ab565b6100867f000000000000000000000000000000000000000000000000000000000000000081565b61012e60015481565b6040519081526020016100a7565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101ac576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180548101905560405184907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908690869061020a906107d3565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184166040840152909216606082015261ffff909116608082015260a001604051809103905ff080158015610263573d5f803e3d5ffd5b505f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055949350505050565b5f6102bb306001546001016102c0565b905090565b5f811561071057607f8211156106615760ff82111561058c5761ffff8211156104b75762ffffff8211156103d3576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b6040516020818303038152906040526107c4565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a016040516020818303038152906040526107c4565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b1660378201526039016103bf565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff000000000000000000000000000000000000000000000000000000000000001660378201526038016103bf565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff000000000000000000000000000000000000000000000000000000000000001660368201526037016103bf565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b80516020909101209392505050565b614b13806200085483390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610804575f80fd5b919050565b5f805f6060848603121561081b575f80fd5b610824846107e1565b9250610832602085016107e1565b9150604084013561ffff81168114610848575f80fd5b80915050925092509256fe61014060405234801562000011575f80fd5b5060405162004b1338038062004b138339810160408190526200003491620002ea565b60408051808201909152601181527022b6b2b933b2b731bca3b7bb32b93737b960791b602082015285828282815f6200006e8282620003fd565b50466080526200007d62000153565b60a052506001600160a01b03811660c0819052620000ae576040516316d3e4a360e01b815260040160405180910390fd5b50620000bc905081620001ef565b5050506001600160a01b038416610120819052620000ed5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03831660e08190526200011a5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0382166101008190526200014857604051637301473d60e11b815260040160405180910390fd5b505050505062000543565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001879190620004c9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127108161ffff16118062000209575061010f61ffff8216105b15620002425760405163073543c360e31b815261ffff8216600482015261010f6024820152612710604482015260640160405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a16003805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b0381168114620002e5575f80fd5b919050565b5f805f805f60a08688031215620002ff575f80fd5b6200030a86620002ce565b94506200031a60208701620002ce565b93506200032a60408701620002ce565b92506200033a60608701620002ce565b9150608086015161ffff8116811462000351575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200038857607f821691505b602082108103620003a757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003f857805f5260205f20601f840160051c81016020851015620003d45750805b601f840160051c820191505b81811015620003f5575f8155600101620003e0565b50505b505050565b81516001600160401b038111156200041957620004196200035f565b62000431816200042a845462000373565b84620003ad565b602080601f83116001811462000467575f84156200044f5750858301515b5f19600386901b1c1916600185901b178555620004c1565b5f85815260208120601f198616915b82811015620004975788860151825594840194600190910190840162000476565b5085821015620004b557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620004d88162000373565b60018281168015620004f35760018114620005095762000537565b60ff198416875282151583028701945062000537565b875f526020805f205f5b858110156200052e5781548a82015290840190820162000513565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051614550620005c35f395f8181610839015261147601525f818161063501526115b501525f81816104f401528181610c99015281816121fa015261227501525f818161047b01528181610b9b0152818161183e01526120fe01525f610f3d01525f610f0d01526145505ff3fe608060405260043610610371575f3560e01c8063849a83b4116101c8578063c01f9e37116100fd578063d11d19c21161009d578063eb9019d41161006d578063eb9019d414610b1c578063f046c64614610b3b578063fb999fcb14610b6e578063fc0c546a14610b8d575f80fd5b8063d11d19c214610a83578063d48d842314610ab6578063dd4e2ba514610ad5578063deaaa7cc14610ae9575f80fd5b8063c59057e4116100d8578063c59057e4146109f3578063c64d2ee614610a12578063c7f758a814610a31578063cee8770814610a64575f80fd5b8063c01f9e3714610992578063c0324da1146109b1578063c2ee3a08146109de575f80fd5b806396ccd67311610168578063a7713a7011610143578063a7713a701461092a578063b4d87a1214610942578063b577512514610961578063b58131b014610980575f80fd5b806396ccd673146108d857806397c3d334146108f75780639b9e9cf81461090b575f80fd5b80638df3227f116101a35780638df3227f146108285780638e9d8c341461085b57806391ddadf41461088e57806394eac995146108b9575f80fd5b8063849a83b4146107c357806384b0196e146107e25780638968eb0714610809575f80fd5b80633bccf4fd116102a9578063544ffc9c1161024957806364a38bf91161021957806364a38bf91461074757806370edcbc4146107665780637b3c71d3146107855780637d5e81e2146107a4575f80fd5b8063544ffc9c1461069557806355a73c53146106ea57806356781388146107095780635b18c26a14610728575f80fd5b80634bf5d7e9116102845780634bf5d7e9146106105780634d6d7441146106245780634d8e082514610657578063519c958714610676575f80fd5b80633bccf4fd1461057c5780633e4f49e61461059b57806343859632146105c7575f80fd5b806324b2c7b3116103145780632d63f693116102ef5780632d63f6931461051657806330717129146105355780633644e515146105545780633932abb114610568575f80fd5b806324b2c7b3146104b15780632656227d146104d05780632b20e397146104e3575f80fd5b80630dd320e91161034f5780630dd320e9146103de578063143489d0146103fd578063160d66ae1461046a5780631703a0181461049d575f80fd5b806302a251a31461037557806306fdde031461039c57806307a00330146103bd575b5f80fd5b348015610380575f80fd5b50610389610bbf565b6040519081526020015b60405180910390f35b3480156103a7575f80fd5b506103b0610bcc565b60405161039391906131be565b3480156103c8575f80fd5b506103dc6103d73660046131d0565b610c5b565b005b3480156103e9575f80fd5b506103896103f836600461335f565b610d0a565b348015610408575f80fd5b506104456104173660046133fb565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610393565b348015610475575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a8575f80fd5b50610389610dd4565b3480156104bc575f80fd5b506103896104cb366004613412565b610df1565b6103896104de366004613612565b610e09565b3480156104ee575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610521575f80fd5b506103896105303660046133fb565b610e5a565b348015610540575f80fd5b5061038961054f36600461369c565b610e82565b34801561055f575f80fd5b50610389610f0a565b348015610573575f80fd5b50610389610f5f565b348015610587575f80fd5b50610389610596366004613771565b610f66565b3480156105a6575f80fd5b506105ba6105b53660046133fb565b610f95565b6040516103939190613821565b3480156105d2575f80fd5b506106006105e136600461382f565b600260209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610393565b34801561061b575f80fd5b506103b06110f9565b34801561062f575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610662575f80fd5b50610389610671366004613859565b611103565b348015610681575f80fd5b506103dc61069036600461388b565b611113565b3480156106a0575f80fd5b506106cf6106af3660046133fb565b5f8181526001602081905260408220908101546002909101549093909250565b60408051938452602084019290925290820152606001610393565b3480156106f5575f80fd5b506103896107043660046138c4565b611134565b348015610714575f80fd5b506103896107233660046138c4565b611146565b348015610733575f80fd5b506103896107423660046138e5565b611161565b348015610752575f80fd5b50610389610761366004613949565b611193565b348015610771575f80fd5b50610389610780366004613949565b6111b5565b348015610790575f80fd5b5061038961079f3660046139ee565b6111f5565b3480156107af575f80fd5b506103896107be366004613a38565b611237565b3480156107ce575f80fd5b506103896107dd366004613412565b61124e565b3480156107ed575f80fd5b506107f66112ae565b6040516103939796959493929190613b0c565b348015610814575f80fd5b50610389610823366004613b94565b6113e6565b348015610833575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610866575f80fd5b506103897fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610899575f80fd5b506108a2611455565b60405165ffffffffffff9091168152602001610393565b3480156108c4575f80fd5b506103dc6108d3366004613c21565b61145e565b3480156108e3575f80fd5b506103896108f23660046139ee565b6114d9565b348015610902575f80fd5b50612710610389565b348015610916575f80fd5b50610389610925366004613c42565b6114e6565b348015610935575f80fd5b5060035461ffff16610389565b34801561094d575f80fd5b506103dc61095c36600461382f565b611568565b34801561096c575f80fd5b506103dc61097b3660046133fb565b61157e565b34801561098b575f80fd5b505f610389565b34801561099d575f80fd5b506103896109ac3660046133fb565b611624565b3480156109bc575f80fd5b506003546109cb9061ffff1681565b60405161ffff9091168152602001610393565b3480156109e9575f80fd5b5061038961271081565b3480156109fe575f80fd5b50610389610a0d366004613612565b61163e565b348015610a1d575f80fd5b50610389610a2c366004613cf6565b611661565b348015610a3c575f80fd5b50610a50610a4b3660046133fb565b6116b3565b604051610393989796959493929190613d69565b348015610a6f575f80fd5b50610389610a7e366004613dd2565b61176e565b348015610a8e575f80fd5b506103897f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610ac1575f80fd5b506103dc610ad036600461382f565b6117be565b348015610ae0575f80fd5b506103b06117d0565b348015610af4575f80fd5b506103897f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b27575f80fd5b50610389610b36366004613e4e565b6117f0565b348015610b46575f80fd5b506103897f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610b79575f80fd5b50610389610b883660046133fb565b6118a9565b348015610b98575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610445565b5f60015b61ffff16905090565b60605f8054610bda90613e76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690613e76565b8015610c515780601f10610c2857610100808354040283529160200191610c51565b820191905f5260205f20905b815481529060010190602001808311610c3457829003601f168201915b5050505050905090565b610c636118e4565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610cf0575f80fd5b505af1158015610d02573d5f803e3d5ffd5b505050505050565b5f610d6f87610d698888604051602001610d25929190613ec7565b604051602081830303815290604052805190602001208787604051602001610d4e929190613f07565b6040516020818303038152906040528051906020012061191f565b8461197b565b610dc987878787878267ffffffffffffffff811115610d9057610d90613259565b604051908082528060200260200182016040528015610dc357816020015b6060815260200190600190039081610dae5790505b506119cc565b979650505050505050565b5f610dec610de0611b19565b60035461ffff16611b22565b905090565b5f610dc93388888888610e04888a613f40565b6119cc565b5f610e15858585611b4c565b5f610e1e611b19565b9050610e50845f81518110610e3557610e35613fb0565b602002602001015182600184610e4b919061400a565b611cef565b9695505050505050565b5f818152600160208190526040822054610e78919061ffff1661400a565b61ffff1692915050565b5f610eeb89610d698a8a604051602001610e9d929190613ec7565b604051602081830303815290604052805190602001208989604051602001610ec6929190613f07565b60405160208183030381529060405280519060200120610ee68989611de3565b611ec6565b610efd8989898989610e04898b613f40565b9998505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610f3a57610dec611f1a565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610bc3565b5f610e50610f7f610f778888611fb4565b868686611ffb565b878760405180602001604052805f81525061201f565b5f818152600160205260408120805462010000900460ff1615610fbb5750600792915050565b805461ffff165f819003610ffb576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61100f61100a60018461400a565b6120ca565b90505f6001830161ffff16611022611b19565b61ffff1611159050815f03611049578061103d576006610e50565b60019695505050505050565b835477010000000000000000000000000000000000000000000000900461ffff16611074838261402c565b6127108660020154611086919061402c565b106110a45781611097576006610dc9565b6004979650505050505050565b6110b28361ffff831661402c565b6127108660010154856110c59190614043565b6110cf919061402c565b101580156110da5750815b156110ec575060019695505050505050565b5060039695505050505050565b6060610dec61217c565b5f61110d8261219c565b92915050565b61111b6118e4565b61112583836121ae565b61112f8382612229565b505050565b5f61113f8383611fb4565b9392505050565b5f61113f33848460405180602001604052805f81525061201f565b5f61117085610d698686611fb4565b61118a85858560405180602001604052805f81525061201f565b95945050505050565b5f61118a33868686868267ffffffffffffffff811115610d9057610d90613259565b5f61118a85856040516020016111cc929190613ec7565b604051602081830303815290604052805190602001208484604051602001610d4e929190613f07565b5f61118a33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f611244858585856122a4565b5095945050505050565b5f610dc98787604051602001611265929190613ec7565b60405160208183030381529060405280519060200120868660405160200161128e929190613f07565b60405160208183030381529060405280519060200120610ee68686611de3565b5f6060808280808381463082806040519080825280602002602001820160405280156112e4578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461131790613e76565b80601f016020809104026020016040519081016040528092919081815260200182805461134390613e76565b801561138e5780601f106113655761010080835404028352916020019161138e565b820191905f5260205f20905b81548152906001019060200180831161137157829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61144961142c610f778a8a604051602001611403929190613ec7565b604051602081830303815290604052805190602001208989604051602001610d4e929190613f07565b898989898267ffffffffffffffff811115610d9057610d90613259565b98975050505050505050565b5f610bc3611b19565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114cd576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d6816124f3565b50565b5f61118a85858585612602565b5f61155a61154c610f778c8c604051602001611503929190613ec7565b604051602081830303815290604052805190602001208b8b60405160200161152c929190613f07565b60405160208183030381529060405280519060200120610ee68b8b611de3565b8b8b8b8b610e048b8d613f40565b9a9950505050505050505050565b6115706118e4565b61157a8282612229565b5050565b6115866118e4565b6040517f10bf5068000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310bf5068906024015f604051808303815f87803b15801561160b575f80fd5b505af115801561161d573d5f803e3d5ffd5b5050505050565b5f81815260016020819052604082205461ffff1601610e78565b5f61118a835f8151811061165457611654613fb0565b602002602001015161219c565b5f61167287610d6988888888612602565b610dc987878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f818152600160205260408120805461ffff1691908190819081908190819081906116de8960010190565b61ffff1697506116ed8a610f95565b600182015460028301548354929950909750955073ffffffffffffffffffffffffffffffffffffffff6301000000820416945061174c9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b9250805f0160179054906101000a900461ffff16915050919395975091939597565b5f611449611781610f778a8a8a8a612602565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b6117c66118e4565b61157a82826121ae565b60606040518060600160405280602d8152602001614489602d9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611885573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f9190614056565b5f818152600160205260408120805461113f9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b33301461191d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f9061113f906080015b6040516020818303038152906040528051906020012061266c565b5f6119878484846126cd565b90505f81600581111561199c5761199c6137bb565b036119a75750505050565b6119b2848484612707565b156119bd5750505050565b6119c68161284f565b50505050565b5f84808203611a07576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611a4f576040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044015b60405180910390fd5b82518114611a965782516040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152611a46918391600401918252602082015260400190565b5f5b81811015611b0d57611b0389898984818110611ab657611ab6613fb0565b90506020020135888885818110611acf57611acf613fb0565b9050602002016020810190611ae4919061406d565b878581518110611af657611af6613fb0565b602002602001015161201f565b9250600101611a98565b50509695505050505050565b5f610dec612a13565b5f612710611b3461100a60018661400a565b611b429061ffff851661402c565b61113f9190614086565b8251600114611b87576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f81518110611bb057611bb0613fb0565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611c05576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114611c40576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f81518110611c5257611c52613fb0565b60200260200101515f14611c92576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600114611ccd576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112f815f81518110611ce257611ce2613fb0565b6020026020010151612a3b565b5f3415611d28576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f03611d65576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1610611db1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192611da3908590612c3b565b9050805f0361113f57611d65565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff811115611dff57611dff613259565b604051908082528060200260200182016040528015611e28578160200160208202803683370190505b5090505f5b82811015611e9457858582818110611e4757611e47613fb0565b9050602002810190611e5991906140be565b604051611e6792919061411f565b6040518091039020828281518110611e8157611e81613fb0565b6020908102919091010152600101611e2d565b5080604051602001611ea6919061412e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f90611f129060a001611960565b949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611f4c9190614163565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061113f90608001611960565b5f8061200986868686612daa565b925090506120168161284f565b50949350505050565b5f8061202a85610f95565b90506001816007811115612040576120406137bb565b1461207957806040517f88f40ea0000000000000000000000000000000000000000000000000000000008152600401611a469190613821565b5f858152600160205260409020546120bb9087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff91821601166117f0565b91506120168683878787612eb7565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015612158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d9190614056565b60606040518060a00160405280606581526020016144b660659139905090565b5f61110d826121a9613069565b613079565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610cd9565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610cd9565b5f806122b1868686611b4c565b6122b9613069565b90506122de845f815181106122d0576122d0613fb0565b602002602001015182613079565b5f8181526001602052604090205490925061ffff161561232a576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245382826040805160c08101825261ffff92831681525f6020808301828152338486019081526003548716606086019081526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561249257612492613259565b6040519080825280602002602001820160405280156124c557816020015b60608152602001906001900390816124b05790505b508987600181018b6040516124e2999897969594939291906142ae565b60405180910390a194509492505050565b6127108161ffff16118061250c575061010f61ffff8216105b15612559576040517f39aa1e1800000000000000000000000000000000000000000000000000000000815261ffff8216600482015261010f60248201526127106044820152606401611a46565b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f61118a7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b8686868660405161263b92919061411f565b60405190819003812061196094939291602001938452602084019290925260ff166040830152606082015260800190565b5f612675610f0a565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f6126da85856130cc565b90925090505f8260058111156126f2576126f26137bb565b146126fd5781610e50565b610e508682613110565b5f805f8573ffffffffffffffffffffffffffffffffffffffff16858560405160240161273492919061438a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516127b591906143a2565b5f60405180830381855afa9150503d805f81146127ed576040519150601f19603f3d011682016040523d82523d5f602084013e6127f2565b606091505b509150915081801561280657506020815110155b8015610e50575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906128449083016020908101908401614056565b149695505050505050565b5f816005811115612862576128626137bb565b0361286a5750565b600181600581111561287e5761287e6137bb565b036128b5576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160058111156128c9576128c96137bb565b03612900576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612914576129146137bb565b0361294b576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600481600581111561295f5761295f6137bb565b03612996576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058160058111156129aa576129aa6137bb565b036129e1576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680612a26636322c96242614043565b612a309190614086565b610dec9060016143bd565b5f612a45826143d0565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a1200000000000000000000000000000000000000000000000000000000148015612a9b5750604481145b158015612af657507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d842300000000000000000000000000000000000000000000000000000000148015612af45750604481145b155b8015612b5057507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c958700000000000000000000000000000000000000000000000000000000148015612b4e5750606481145b155b8015612baa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a0033000000000000000000000000000000000000000000000000000000000148015612ba85750604481145b155b8015612c0457507fffffffff0000000000000000000000000000000000000000000000000000000082167fb577512500000000000000000000000000000000000000000000000000000000148015612c025750602481145b155b1561112f576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612c468383613079565b5f81815260016020526040902080549192509061ffff848116911614612c6f575f91505061110d565b6004612c7a83610f95565b6007811115612c8b57612c8b6137bb565b14612c99575f91505061110d565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612cf69084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612d2591906143a2565b5f604051808303815f865af19150503d805f8114612d5e576040519150601f19603f3d011682016040523d82523d5f602084013e612d63565b606091505b509150915081612da157806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401611a4691906131be565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612ddf5750600390505f612eae565b8460ff16601b14158015612df757508460ff16601c14155b15612e075750600490505f612eae565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612e57573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615612ea5575f81612ea9565b60015f5b915091505b94509492505050565b835f03612ef0576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615612f59576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff166001811115612fc557612fc56137bb565b6001811115612fd657612fd66137bb565b03612ff7575f8381526001602081905260409091200180548501905561300e565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48484878560405161305a949392919061441f565b60405180910390a25050505050565b5f80613073611b19565b01905090565b5f82823060405160200161308f93929190614446565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f8082516041146130e25750600290505f613109565b6020830151604084015160608501515f1a919061310187848484612daa565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461314b57600561113f565b505f92915050565b5f5b8381101561316d578181015183820152602001613155565b50505f910152565b5f815180845261318c816020860160208601613153565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61113f6020830184613175565b5f80604083850312156131e1575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613213575f80fd5b919050565b5f8083601f840112613228575f80fd5b50813567ffffffffffffffff81111561323f575f80fd5b6020830191508360208260051b8501011115613109575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156132cd576132cd613259565b604052919050565b5f82601f8301126132e4575f80fd5b813567ffffffffffffffff8111156132fe576132fe613259565b61332f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613286565b818152846020838601011115613343575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613374575f80fd5b61337d876131f0565b9550602087013567ffffffffffffffff80821115613399575f80fd5b6133a58a838b01613218565b909750955060408901359150808211156133bd575f80fd5b6133c98a838b01613218565b909550935060608901359150808211156133e1575f80fd5b506133ee89828a016132d5565b9150509295509295509295565b5f6020828403121561340b575f80fd5b5035919050565b5f805f805f8060608789031215613427575f80fd5b863567ffffffffffffffff8082111561343e575f80fd5b61344a8a838b01613218565b90985096506020890135915080821115613462575f80fd5b61346e8a838b01613218565b90965094506040890135915080821115613486575f80fd5b5061349389828a01613218565b979a9699509497509295939492505050565b5f67ffffffffffffffff8211156134be576134be613259565b5060051b60200190565b5f82601f8301126134d7575f80fd5b813560206134ec6134e7836134a5565b613286565b8083825260208201915060208460051b87010193508684111561350d575f80fd5b602086015b8481101561353057613523816131f0565b8352918301918301613512565b509695505050505050565b5f82601f83011261354a575f80fd5b8135602061355a6134e7836134a5565b8083825260208201915060208460051b87010193508684111561357b575f80fd5b602086015b848110156135305780358352918301918301613580565b5f82601f8301126135a6575f80fd5b813560206135b66134e7836134a5565b82815260059290921b840181019181810190868411156135d4575f80fd5b8286015b8481101561353057803567ffffffffffffffff8111156135f6575f80fd5b6136048986838b01016132d5565b8452509183019183016135d8565b5f805f8060808587031215613625575f80fd5b843567ffffffffffffffff8082111561363c575f80fd5b613648888389016134c8565b9550602087013591508082111561365d575f80fd5b6136698883890161353b565b9450604087013591508082111561367e575f80fd5b5061368b87828801613597565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156136b3575f80fd5b6136bc896131f0565b9750602089013567ffffffffffffffff808211156136d8575f80fd5b6136e48c838d01613218565b909950975060408b01359150808211156136fc575f80fd5b6137088c838d01613218565b909750955060608b0135915080821115613720575f80fd5b61372c8c838d01613218565b909550935060808b0135915080821115613744575f80fd5b506137518b828c016132d5565b9150509295985092959890939650565b803560ff81168114613213575f80fd5b5f805f805f60a08688031215613785575f80fd5b8535945061379560208701613761565b93506137a360408701613761565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061381d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6020810161110d82846137e8565b5f8060408385031215613840575f80fd5b82359150613850602084016131f0565b90509250929050565b5f60208284031215613869575f80fd5b813567ffffffffffffffff81111561387f575f80fd5b611f12848285016132d5565b5f805f6060848603121561389d575f80fd5b833592506138ad602085016131f0565b91506138bb604085016131f0565b90509250925092565b5f80604083850312156138d5575f80fd5b8235915061385060208401613761565b5f805f80608085870312156138f8575f80fd5b613901856131f0565b93506020850135925061391660408601613761565b9150606085013567ffffffffffffffff811115613931575f80fd5b61393d878288016132d5565b91505092959194509250565b5f805f806040858703121561395c575f80fd5b843567ffffffffffffffff80821115613973575f80fd5b61397f88838901613218565b90965094506020870135915080821115613997575f80fd5b506139a487828801613218565b95989497509550505050565b5f8083601f8401126139c0575f80fd5b50813567ffffffffffffffff8111156139d7575f80fd5b602083019150836020828501011115613109575f80fd5b5f805f8060608587031215613a01575f80fd5b84359350613a1160208601613761565b9250604085013567ffffffffffffffff811115613a2c575f80fd5b6139a4878288016139b0565b5f805f8060808587031215613a4b575f80fd5b843567ffffffffffffffff80821115613a62575f80fd5b613a6e888389016134c8565b95506020870135915080821115613a83575f80fd5b613a8f8883890161353b565b94506040870135915080821115613aa4575f80fd5b613ab088838901613597565b93506060870135915080821115613ac5575f80fd5b5061393d878288016132d5565b5f815180845260208085019450602084015f5b83811015613b0157815187529582019590820190600101613ae5565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f613b4660e0830189613175565b8281036040840152613b588189613175565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c084015261155a8185613ad2565b5f805f805f805f60a0888a031215613baa575f80fd5b873567ffffffffffffffff80821115613bc1575f80fd5b613bcd8b838c01613218565b909950975060208a0135915080821115613be5575f80fd5b50613bf28a828b01613218565b9096509450613c05905060408901613761565b9250606088013591506080880135905092959891949750929550565b5f60208284031215613c31575f80fd5b813561ffff8116811461113f575f80fd5b5f805f805f805f805f60c08a8c031215613c5a575f80fd5b893567ffffffffffffffff80821115613c71575f80fd5b613c7d8d838e01613218565b909b50995060208c0135915080821115613c95575f80fd5b613ca18d838e01613218565b909950975060408c0135915080821115613cb9575f80fd5b50613cc68c828d01613218565b9096509450613cd9905060608b01613761565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a08789031215613d0b575f80fd5b613d14876131f0565b955060208701359450613d2960408801613761565b9350606087013567ffffffffffffffff80821115613d45575f80fd5b613d518a838b016139b0565b909550935060808901359150808211156133e1575f80fd5b65ffffffffffff8981168252881660208201526101008101613d8e60408301896137e8565b6060820196909652608081019490945273ffffffffffffffffffffffffffffffffffffffff9290921660a084015260c083015261ffff1660e0909101529392505050565b5f805f805f805f60c0888a031215613de8575f80fd5b87359650613df860208901613761565b9550604088013567ffffffffffffffff811115613e13575f80fd5b613e1f8a828b016139b0565b9096509450613e32905060608901613761565b92506080880135915060a0880135905092959891949750929550565b5f8060408385031215613e5f575f80fd5b613e68836131f0565b946020939093013593505050565b600181811c90821680613e8a57607f821691505b602082108103613ec1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613ef4575f80fd5b8260051b80858437919091019392505050565b5f8184825b85811015613f355760ff613f1f83613761565b1683526020928301929190910190600101613f0c565b509095945050505050565b5f613f4d6134e7846134a5565b80848252602080830192508560051b850136811115613f6a575f80fd5b855b81811015613fa457803567ffffffffffffffff811115613f8a575f80fd5b613f9636828a016132d5565b865250938201938201613f6c565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff82811682821603908082111561402557614025613fdd565b5092915050565b808202811582820484141761110d5761110d613fdd565b8181038181111561110d5761110d613fdd565b5f60208284031215614066575f80fd5b5051919050565b5f6020828403121561407d575f80fd5b61113f82613761565b5f826140b9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140f1575f80fd5b83018035915067ffffffffffffffff82111561410b575f80fd5b602001915036819003821315613109575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b838110156141575781518552938201939082019060010161413b565b50929695505050505050565b5f8083545f60018260011c9150600183168061418057607f831692505b602080841082036141b8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b8180156141cc57600181146141ff5761422a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284151585028901965061422a565b5f8a8152602090205f5b868110156142225781548b820152908501908301614209565b505084890196505b509498975050505050505050565b5f8282518085526020808601955060208260051b840101602086015f5b848110156142a1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261428f838351613175565b98840198925090830190600101614255565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b818110156143125784518316865294830194938301936001016142f4565b50505050508281036060840152614329818a613ad2565b9050828103608084015261433d8189614238565b905082810360a08401526143518188614238565b61ffff871660c0850152905061ffff851660e084015282810361010084015261437a8185613175565b9c9b505050505050505050505050565b828152604060208201525f611f126040830184613175565b5f82516143b3818460208701613153565b9190910192915050565b8082018082111561110d5761110d613fdd565b5f815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156144175780818460040360031b1b83161693505b505050919050565b84815260ff84166020820152826040820152608060608201525f610e506080830184613175565b606081525f6144586060830186613175565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff8316604083015294935050505056fe737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d71756f72756d6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220d596a961f0c33c466fe8ae6c3e7e566bd4ddbd11f6d912f1e0cf1c9fb213d74464736f6c63430008170033a26469706673582212208558aada702501d76cde3118d3ba3f2a7f4363474fc4e50952b6370179ce40bc64736f6c63430008170033" } +{ "bytecode": "0x60c060405234801561000f575f80fd5b506040516154aa3803806154aa83398101604081905261002e916100a8565b6001600160a01b03821660a081905261005a5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03811660808190526100865760405163a8a93d6960e01b815260040160405180910390fd5b50506100d9565b80516001600160a01b03811681146100a3575f80fd5b919050565b5f80604083850312156100b9575f80fd5b6100c28361008d565b91506100d06020840161008d565b90509250929050565b60805160a05161539c61010e5f395f81816101030152818161015501526101bb01525f818160b501526101dd015261539c5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063777f14d91161004d578063777f14d9146100f65780638df3227f146100fe578063affed0e014610125575f80fd5b80631af0131c146100735780632b20e397146100b0578063585e78af146100d7575b5f80fd5b610086610081366004610809565b61013c565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100867f000000000000000000000000000000000000000000000000000000000000000081565b5f546100869073ffffffffffffffffffffffffffffffffffffffff1681565b6100866102ab565b6100867f000000000000000000000000000000000000000000000000000000000000000081565b61012e60015481565b6040519081526020016100a7565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101ac576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180548101905560405184907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908690869061020a906107d3565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184166040840152909216606082015261ffff909116608082015260a001604051809103905ff080158015610263573d5f803e3d5ffd5b505f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055949350505050565b5f6102bb306001546001016102c0565b905090565b5f811561071057607f8211156106615760ff82111561058c5761ffff8211156104b75762ffffff8211156103d3576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b6040516020818303038152906040526107c4565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a016040516020818303038152906040526107c4565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b1660378201526039016103bf565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff000000000000000000000000000000000000000000000000000000000000001660378201526038016103bf565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff000000000000000000000000000000000000000000000000000000000000001660368201526037016103bf565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b80516020909101209392505050565b614b13806200085483390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610804575f80fd5b919050565b5f805f6060848603121561081b575f80fd5b610824846107e1565b9250610832602085016107e1565b9150604084013561ffff81168114610848575f80fd5b80915050925092509256fe61014060405234801562000011575f80fd5b5060405162004b1338038062004b138339810160408190526200003491620002ea565b60408051808201909152601181527022b6b2b933b2b731bca3b7bb32b93737b960791b602082015285828282815f6200006e8282620003fd565b50466080526200007d62000153565b60a052506001600160a01b03811660c0819052620000ae576040516316d3e4a360e01b815260040160405180910390fd5b50620000bc905081620001ef565b5050506001600160a01b038416610120819052620000ed5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03831660e08190526200011a5760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0382166101008190526200014857604051637301473d60e11b815260040160405180910390fd5b505050505062000543565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001879190620004c9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127108161ffff16118062000209575061010f61ffff8216105b15620002425760405163073543c360e31b815261ffff8216600482015261010f6024820152612710604482015260640160405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a16003805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b80516001600160a01b0381168114620002e5575f80fd5b919050565b5f805f805f60a08688031215620002ff575f80fd5b6200030a86620002ce565b94506200031a60208701620002ce565b93506200032a60408701620002ce565b92506200033a60608701620002ce565b9150608086015161ffff8116811462000351575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200038857607f821691505b602082108103620003a757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003f857805f5260205f20601f840160051c81016020851015620003d45750805b601f840160051c820191505b81811015620003f5575f8155600101620003e0565b50505b505050565b81516001600160401b038111156200041957620004196200035f565b62000431816200042a845462000373565b84620003ad565b602080601f83116001811462000467575f84156200044f5750858301515b5f19600386901b1c1916600185901b178555620004c1565b5f85815260208120601f198616915b82811015620004975788860151825594840194600190910190840162000476565b5085821015620004b557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620004d88162000373565b60018281168015620004f35760018114620005095762000537565b60ff198416875282151583028701945062000537565b875f526020805f205f5b858110156200052e5781548a82015290840190820162000513565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051614550620005c35f395f8181610839015261147601525f818161063501526115b501525f81816104f401528181610c99015281816121fa015261227501525f818161047b01528181610b9b0152818161183e01526120fe01525f610f3d01525f610f0d01526145505ff3fe608060405260043610610371575f3560e01c8063849a83b4116101c8578063c01f9e37116100fd578063d11d19c21161009d578063eb9019d41161006d578063eb9019d414610b1c578063f046c64614610b3b578063fb999fcb14610b6e578063fc0c546a14610b8d575f80fd5b8063d11d19c214610a83578063d48d842314610ab6578063dd4e2ba514610ad5578063deaaa7cc14610ae9575f80fd5b8063c59057e4116100d8578063c59057e4146109f3578063c64d2ee614610a12578063c7f758a814610a31578063cee8770814610a64575f80fd5b8063c01f9e3714610992578063c0324da1146109b1578063c2ee3a08146109de575f80fd5b806396ccd67311610168578063a7713a7011610143578063a7713a701461092a578063b4d87a1214610942578063b577512514610961578063b58131b014610980575f80fd5b806396ccd673146108d857806397c3d334146108f75780639b9e9cf81461090b575f80fd5b80638df3227f116101a35780638df3227f146108285780638e9d8c341461085b57806391ddadf41461088e57806394eac995146108b9575f80fd5b8063849a83b4146107c357806384b0196e146107e25780638968eb0714610809575f80fd5b80633bccf4fd116102a9578063544ffc9c1161024957806364a38bf91161021957806364a38bf91461074757806370edcbc4146107665780637b3c71d3146107855780637d5e81e2146107a4575f80fd5b8063544ffc9c1461069557806355a73c53146106ea57806356781388146107095780635b18c26a14610728575f80fd5b80634bf5d7e9116102845780634bf5d7e9146106105780634d6d7441146106245780634d8e082514610657578063519c958714610676575f80fd5b80633bccf4fd1461057c5780633e4f49e61461059b57806343859632146105c7575f80fd5b806324b2c7b3116103145780632d63f693116102ef5780632d63f6931461051657806330717129146105355780633644e515146105545780633932abb114610568575f80fd5b806324b2c7b3146104b15780632656227d146104d05780632b20e397146104e3575f80fd5b80630dd320e91161034f5780630dd320e9146103de578063143489d0146103fd578063160d66ae1461046a5780631703a0181461049d575f80fd5b806302a251a31461037557806306fdde031461039c57806307a00330146103bd575b5f80fd5b348015610380575f80fd5b50610389610bbf565b6040519081526020015b60405180910390f35b3480156103a7575f80fd5b506103b0610bcc565b60405161039391906131be565b3480156103c8575f80fd5b506103dc6103d73660046131d0565b610c5b565b005b3480156103e9575f80fd5b506103896103f836600461335f565b610d0a565b348015610408575f80fd5b506104456104173660046133fb565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610393565b348015610475575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a8575f80fd5b50610389610dd4565b3480156104bc575f80fd5b506103896104cb366004613412565b610df1565b6103896104de366004613612565b610e09565b3480156104ee575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610521575f80fd5b506103896105303660046133fb565b610e5a565b348015610540575f80fd5b5061038961054f36600461369c565b610e82565b34801561055f575f80fd5b50610389610f0a565b348015610573575f80fd5b50610389610f5f565b348015610587575f80fd5b50610389610596366004613771565b610f66565b3480156105a6575f80fd5b506105ba6105b53660046133fb565b610f95565b6040516103939190613821565b3480156105d2575f80fd5b506106006105e136600461382f565b600260209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610393565b34801561061b575f80fd5b506103b06110f9565b34801561062f575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610662575f80fd5b50610389610671366004613859565b611103565b348015610681575f80fd5b506103dc61069036600461388b565b611113565b3480156106a0575f80fd5b506106cf6106af3660046133fb565b5f8181526001602081905260408220908101546002909101549093909250565b60408051938452602084019290925290820152606001610393565b3480156106f5575f80fd5b506103896107043660046138c4565b611134565b348015610714575f80fd5b506103896107233660046138c4565b611146565b348015610733575f80fd5b506103896107423660046138e5565b611161565b348015610752575f80fd5b50610389610761366004613949565b611193565b348015610771575f80fd5b50610389610780366004613949565b6111b5565b348015610790575f80fd5b5061038961079f3660046139ee565b6111f5565b3480156107af575f80fd5b506103896107be366004613a38565b611237565b3480156107ce575f80fd5b506103896107dd366004613412565b61124e565b3480156107ed575f80fd5b506107f66112ae565b6040516103939796959493929190613b0c565b348015610814575f80fd5b50610389610823366004613b94565b6113e6565b348015610833575f80fd5b506104457f000000000000000000000000000000000000000000000000000000000000000081565b348015610866575f80fd5b506103897fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610899575f80fd5b506108a2611455565b60405165ffffffffffff9091168152602001610393565b3480156108c4575f80fd5b506103dc6108d3366004613c21565b61145e565b3480156108e3575f80fd5b506103896108f23660046139ee565b6114d9565b348015610902575f80fd5b50612710610389565b348015610916575f80fd5b50610389610925366004613c42565b6114e6565b348015610935575f80fd5b5060035461ffff16610389565b34801561094d575f80fd5b506103dc61095c36600461382f565b611568565b34801561096c575f80fd5b506103dc61097b3660046133fb565b61157e565b34801561098b575f80fd5b505f610389565b34801561099d575f80fd5b506103896109ac3660046133fb565b611624565b3480156109bc575f80fd5b506003546109cb9061ffff1681565b60405161ffff9091168152602001610393565b3480156109e9575f80fd5b5061038961271081565b3480156109fe575f80fd5b50610389610a0d366004613612565b61163e565b348015610a1d575f80fd5b50610389610a2c366004613cf6565b611661565b348015610a3c575f80fd5b50610a50610a4b3660046133fb565b6116b3565b604051610393989796959493929190613d69565b348015610a6f575f80fd5b50610389610a7e366004613dd2565b61176e565b348015610a8e575f80fd5b506103897f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610ac1575f80fd5b506103dc610ad036600461382f565b6117be565b348015610ae0575f80fd5b506103b06117d0565b348015610af4575f80fd5b506103897f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b27575f80fd5b50610389610b36366004613e4e565b6117f0565b348015610b46575f80fd5b506103897f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610b79575f80fd5b50610389610b883660046133fb565b6118a9565b348015610b98575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610445565b5f60015b61ffff16905090565b60605f8054610bda90613e76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0690613e76565b8015610c515780601f10610c2857610100808354040283529160200191610c51565b820191905f5260205f20905b815481529060010190602001808311610c3457829003601f168201915b5050505050905090565b610c636118e4565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610cf0575f80fd5b505af1158015610d02573d5f803e3d5ffd5b505050505050565b5f610d6f87610d698888604051602001610d25929190613ec7565b604051602081830303815290604052805190602001208787604051602001610d4e929190613f07565b6040516020818303038152906040528051906020012061191f565b8461197b565b610dc987878787878267ffffffffffffffff811115610d9057610d90613259565b604051908082528060200260200182016040528015610dc357816020015b6060815260200190600190039081610dae5790505b506119cc565b979650505050505050565b5f610dec610de0611b19565b60035461ffff16611b22565b905090565b5f610dc93388888888610e04888a613f40565b6119cc565b5f610e15858585611b4c565b5f610e1e611b19565b9050610e50845f81518110610e3557610e35613fb0565b602002602001015182600184610e4b919061400a565b611cef565b9695505050505050565b5f818152600160208190526040822054610e78919061ffff1661400a565b61ffff1692915050565b5f610eeb89610d698a8a604051602001610e9d929190613ec7565b604051602081830303815290604052805190602001208989604051602001610ec6929190613f07565b60405160208183030381529060405280519060200120610ee68989611de3565b611ec6565b610efd8989898989610e04898b613f40565b9998505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610f3a57610dec611f1a565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610bc3565b5f610e50610f7f610f778888611fb4565b868686611ffb565b878760405180602001604052805f81525061201f565b5f818152600160205260408120805462010000900460ff1615610fbb5750600792915050565b805461ffff165f819003610ffb576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61100f61100a60018461400a565b6120ca565b90505f6001830161ffff16611022611b19565b61ffff1611159050815f03611049578061103d576006610e50565b60019695505050505050565b835477010000000000000000000000000000000000000000000000900461ffff16611074838261402c565b6127108660020154611086919061402c565b106110a45781611097576006610dc9565b6004979650505050505050565b6110b28361ffff831661402c565b6127108660010154856110c59190614043565b6110cf919061402c565b101580156110da5750815b156110ec575060019695505050505050565b5060039695505050505050565b6060610dec61217c565b5f61110d8261219c565b92915050565b61111b6118e4565b61112583836121ae565b61112f8382612229565b505050565b5f61113f8383611fb4565b9392505050565b5f61113f33848460405180602001604052805f81525061201f565b5f61117085610d698686611fb4565b61118a85858560405180602001604052805f81525061201f565b95945050505050565b5f61118a33868686868267ffffffffffffffff811115610d9057610d90613259565b5f61118a85856040516020016111cc929190613ec7565b604051602081830303815290604052805190602001208484604051602001610d4e929190613f07565b5f61118a33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f611244858585856122a4565b5095945050505050565b5f610dc98787604051602001611265929190613ec7565b60405160208183030381529060405280519060200120868660405160200161128e929190613f07565b60405160208183030381529060405280519060200120610ee68686611de3565b5f6060808280808381463082806040519080825280602002602001820160405280156112e4578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461131790613e76565b80601f016020809104026020016040519081016040528092919081815260200182805461134390613e76565b801561138e5780601f106113655761010080835404028352916020019161138e565b820191905f5260205f20905b81548152906001019060200180831161137157829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f61144961142c610f778a8a604051602001611403929190613ec7565b604051602081830303815290604052805190602001208989604051602001610d4e929190613f07565b898989898267ffffffffffffffff811115610d9057610d90613259565b98975050505050505050565b5f610bc3611b19565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114cd576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d6816124f3565b50565b5f61118a85858585612602565b5f61155a61154c610f778c8c604051602001611503929190613ec7565b604051602081830303815290604052805190602001208b8b60405160200161152c929190613f07565b60405160208183030381529060405280519060200120610ee68b8b611de3565b8b8b8b8b610e048b8d613f40565b9a9950505050505050505050565b6115706118e4565b61157a8282612229565b5050565b6115866118e4565b6040517f10bf5068000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310bf5068906024015f604051808303815f87803b15801561160b575f80fd5b505af115801561161d573d5f803e3d5ffd5b5050505050565b5f81815260016020819052604082205461ffff1601610e78565b5f61118a835f8151811061165457611654613fb0565b602002602001015161219c565b5f61167287610d6988888888612602565b610dc987878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b5f818152600160205260408120805461ffff1691908190819081908190819081906116de8960010190565b61ffff1697506116ed8a610f95565b600182015460028301548354929950909750955073ffffffffffffffffffffffffffffffffffffffff6301000000820416945061174c9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b9250805f0160179054906101000a900461ffff16915050919395975091939597565b5f611449611781610f778a8a8a8a612602565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061201f92505050565b6117c66118e4565b61157a82826121ae565b60606040518060600160405280602d81526020016144ee602d9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611885573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113f9190614056565b5f818152600160205260408120805461113f9061ffff8082169177010000000000000000000000000000000000000000000000900416611b22565b33301461191d576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f9061113f906080015b6040516020818303038152906040528051906020012061266c565b5f6119878484846126cd565b90505f81600581111561199c5761199c6137bb565b036119a75750505050565b6119b2848484612707565b156119bd5750505050565b6119c68161284f565b50505050565b5f84808203611a07576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611a4f576040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044015b60405180910390fd5b82518114611a965782516040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152611a46918391600401918252602082015260400190565b5f5b81811015611b0d57611b0389898984818110611ab657611ab6613fb0565b90506020020135888885818110611acf57611acf613fb0565b9050602002016020810190611ae4919061406d565b878581518110611af657611af6613fb0565b602002602001015161201f565b9250600101611a98565b50509695505050505050565b5f610dec612a13565b5f612710611b3461100a60018661400a565b611b429061ffff851661402c565b61113f9190614086565b8251600114611b87576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f81518110611bb057611bb0613fb0565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611c05576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114611c40576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f81518110611c5257611c52613fb0565b60200260200101515f14611c92576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600114611ccd576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112f815f81518110611ce257611ce2613fb0565b6020026020010151612a3b565b5f3415611d28576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f03611d65576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1610611db1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192611da3908590612c3b565b9050805f0361113f57611d65565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff811115611dff57611dff613259565b604051908082528060200260200182016040528015611e28578160200160208202803683370190505b5090505f5b82811015611e9457858582818110611e4757611e47613fb0565b9050602002810190611e5991906140be565b604051611e6792919061411f565b6040518091039020828281518110611e8157611e81613fb0565b6020908102919091010152600101611e2d565b5080604051602001611ea6919061412e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f90611f129060a001611960565b949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611f4c9190614163565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061113f90608001611960565b5f8061200986868686612daa565b925090506120168161284f565b50949350505050565b5f8061202a85610f95565b90506001816007811115612040576120406137bb565b1461207957806040517f88f40ea0000000000000000000000000000000000000000000000000000000008152600401611a469190613821565b5f858152600160205260409020546120bb9087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff91821601166117f0565b91506120168683878787612eb7565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015612158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d9190614056565b60606040518060a001604052806065815260200161448960659139905090565b5f61110d826121a9613069565b613079565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610cd9565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610cd9565b5f806122b1868686611b4c565b6122b9613069565b90506122de845f815181106122d0576122d0613fb0565b602002602001015182613079565b5f8181526001602052604090205490925061ffff161561232a576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245382826040805160c08101825261ffff92831681525f6020808301828152338486019081526003548716606086019081526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561249257612492613259565b6040519080825280602002602001820160405280156124c557816020015b60608152602001906001900390816124b05790505b508987600181018b6040516124e2999897969594939291906142ae565b60405180910390a194509492505050565b6127108161ffff16118061250c575061010f61ffff8216105b15612559576040517f39aa1e1800000000000000000000000000000000000000000000000000000000815261ffff8216600482015261010f60248201526127106044820152606401611a46565b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f61118a7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b8686868660405161263b92919061411f565b60405190819003812061196094939291602001938452602084019290925260ff166040830152606082015260800190565b5f612675610f0a565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f6126da85856130cc565b90925090505f8260058111156126f2576126f26137bb565b146126fd5781610e50565b610e508682613110565b5f805f8573ffffffffffffffffffffffffffffffffffffffff16858560405160240161273492919061438a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516127b591906143a2565b5f60405180830381855afa9150503d805f81146127ed576040519150601f19603f3d011682016040523d82523d5f602084013e6127f2565b606091505b509150915081801561280657506020815110155b8015610e50575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906128449083016020908101908401614056565b149695505050505050565b5f816005811115612862576128626137bb565b0361286a5750565b600181600581111561287e5761287e6137bb565b036128b5576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160058111156128c9576128c96137bb565b03612900576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612914576129146137bb565b0361294b576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600481600581111561295f5761295f6137bb565b03612996576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058160058111156129aa576129aa6137bb565b036129e1576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680612a2663661bd35042614043565b612a309190614086565b610dec9060016143bd565b5f612a45826143d0565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a1200000000000000000000000000000000000000000000000000000000148015612a9b5750604481145b158015612af657507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d842300000000000000000000000000000000000000000000000000000000148015612af45750604481145b155b8015612b5057507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c958700000000000000000000000000000000000000000000000000000000148015612b4e5750606481145b155b8015612baa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a0033000000000000000000000000000000000000000000000000000000000148015612ba85750604481145b155b8015612c0457507fffffffff0000000000000000000000000000000000000000000000000000000082167fb577512500000000000000000000000000000000000000000000000000000000148015612c025750602481145b155b1561112f576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612c468383613079565b5f81815260016020526040902080549192509061ffff848116911614612c6f575f91505061110d565b6004612c7a83610f95565b6007811115612c8b57612c8b6137bb565b14612c99575f91505061110d565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612cf69084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612d2591906143a2565b5f604051808303815f865af19150503d805f8114612d5e576040519150601f19603f3d011682016040523d82523d5f602084013e612d63565b606091505b509150915081612da157806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401611a4691906131be565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612ddf5750600390505f612eae565b8460ff16601b14158015612df757508460ff16601c14155b15612e075750600490505f612eae565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612e57573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615612ea5575f81612ea9565b60015f5b915091505b94509492505050565b835f03612ef0576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615612f59576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff166001811115612fc557612fc56137bb565b6001811115612fd657612fd66137bb565b03612ff7575f8381526001602081905260409091200180548501905561300e565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48484878560405161305a949392919061441f565b60405180910390a25050505050565b5f80613073611b19565b01905090565b5f82823060405160200161308f93929190614446565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f8082516041146130e25750600290505f613109565b6020830151604084015160608501515f1a919061310187848484612daa565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461314b57600561113f565b505f92915050565b5f5b8381101561316d578181015183820152602001613155565b50505f910152565b5f815180845261318c816020860160208601613153565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f61113f6020830184613175565b5f80604083850312156131e1575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613213575f80fd5b919050565b5f8083601f840112613228575f80fd5b50813567ffffffffffffffff81111561323f575f80fd5b6020830191508360208260051b8501011115613109575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156132cd576132cd613259565b604052919050565b5f82601f8301126132e4575f80fd5b813567ffffffffffffffff8111156132fe576132fe613259565b61332f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613286565b818152846020838601011115613343575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613374575f80fd5b61337d876131f0565b9550602087013567ffffffffffffffff80821115613399575f80fd5b6133a58a838b01613218565b909750955060408901359150808211156133bd575f80fd5b6133c98a838b01613218565b909550935060608901359150808211156133e1575f80fd5b506133ee89828a016132d5565b9150509295509295509295565b5f6020828403121561340b575f80fd5b5035919050565b5f805f805f8060608789031215613427575f80fd5b863567ffffffffffffffff8082111561343e575f80fd5b61344a8a838b01613218565b90985096506020890135915080821115613462575f80fd5b61346e8a838b01613218565b90965094506040890135915080821115613486575f80fd5b5061349389828a01613218565b979a9699509497509295939492505050565b5f67ffffffffffffffff8211156134be576134be613259565b5060051b60200190565b5f82601f8301126134d7575f80fd5b813560206134ec6134e7836134a5565b613286565b8083825260208201915060208460051b87010193508684111561350d575f80fd5b602086015b8481101561353057613523816131f0565b8352918301918301613512565b509695505050505050565b5f82601f83011261354a575f80fd5b8135602061355a6134e7836134a5565b8083825260208201915060208460051b87010193508684111561357b575f80fd5b602086015b848110156135305780358352918301918301613580565b5f82601f8301126135a6575f80fd5b813560206135b66134e7836134a5565b82815260059290921b840181019181810190868411156135d4575f80fd5b8286015b8481101561353057803567ffffffffffffffff8111156135f6575f80fd5b6136048986838b01016132d5565b8452509183019183016135d8565b5f805f8060808587031215613625575f80fd5b843567ffffffffffffffff8082111561363c575f80fd5b613648888389016134c8565b9550602087013591508082111561365d575f80fd5b6136698883890161353b565b9450604087013591508082111561367e575f80fd5b5061368b87828801613597565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156136b3575f80fd5b6136bc896131f0565b9750602089013567ffffffffffffffff808211156136d8575f80fd5b6136e48c838d01613218565b909950975060408b01359150808211156136fc575f80fd5b6137088c838d01613218565b909750955060608b0135915080821115613720575f80fd5b61372c8c838d01613218565b909550935060808b0135915080821115613744575f80fd5b506137518b828c016132d5565b9150509295985092959890939650565b803560ff81168114613213575f80fd5b5f805f805f60a08688031215613785575f80fd5b8535945061379560208701613761565b93506137a360408701613761565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061381d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b6020810161110d82846137e8565b5f8060408385031215613840575f80fd5b82359150613850602084016131f0565b90509250929050565b5f60208284031215613869575f80fd5b813567ffffffffffffffff81111561387f575f80fd5b611f12848285016132d5565b5f805f6060848603121561389d575f80fd5b833592506138ad602085016131f0565b91506138bb604085016131f0565b90509250925092565b5f80604083850312156138d5575f80fd5b8235915061385060208401613761565b5f805f80608085870312156138f8575f80fd5b613901856131f0565b93506020850135925061391660408601613761565b9150606085013567ffffffffffffffff811115613931575f80fd5b61393d878288016132d5565b91505092959194509250565b5f805f806040858703121561395c575f80fd5b843567ffffffffffffffff80821115613973575f80fd5b61397f88838901613218565b90965094506020870135915080821115613997575f80fd5b506139a487828801613218565b95989497509550505050565b5f8083601f8401126139c0575f80fd5b50813567ffffffffffffffff8111156139d7575f80fd5b602083019150836020828501011115613109575f80fd5b5f805f8060608587031215613a01575f80fd5b84359350613a1160208601613761565b9250604085013567ffffffffffffffff811115613a2c575f80fd5b6139a4878288016139b0565b5f805f8060808587031215613a4b575f80fd5b843567ffffffffffffffff80821115613a62575f80fd5b613a6e888389016134c8565b95506020870135915080821115613a83575f80fd5b613a8f8883890161353b565b94506040870135915080821115613aa4575f80fd5b613ab088838901613597565b93506060870135915080821115613ac5575f80fd5b5061393d878288016132d5565b5f815180845260208085019450602084015f5b83811015613b0157815187529582019590820190600101613ae5565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f613b4660e0830189613175565b8281036040840152613b588189613175565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c084015261155a8185613ad2565b5f805f805f805f60a0888a031215613baa575f80fd5b873567ffffffffffffffff80821115613bc1575f80fd5b613bcd8b838c01613218565b909950975060208a0135915080821115613be5575f80fd5b50613bf28a828b01613218565b9096509450613c05905060408901613761565b9250606088013591506080880135905092959891949750929550565b5f60208284031215613c31575f80fd5b813561ffff8116811461113f575f80fd5b5f805f805f805f805f60c08a8c031215613c5a575f80fd5b893567ffffffffffffffff80821115613c71575f80fd5b613c7d8d838e01613218565b909b50995060208c0135915080821115613c95575f80fd5b613ca18d838e01613218565b909950975060408c0135915080821115613cb9575f80fd5b50613cc68c828d01613218565b9096509450613cd9905060608b01613761565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a08789031215613d0b575f80fd5b613d14876131f0565b955060208701359450613d2960408801613761565b9350606087013567ffffffffffffffff80821115613d45575f80fd5b613d518a838b016139b0565b909550935060808901359150808211156133e1575f80fd5b65ffffffffffff8981168252881660208201526101008101613d8e60408301896137e8565b6060820196909652608081019490945273ffffffffffffffffffffffffffffffffffffffff9290921660a084015260c083015261ffff1660e0909101529392505050565b5f805f805f805f60c0888a031215613de8575f80fd5b87359650613df860208901613761565b9550604088013567ffffffffffffffff811115613e13575f80fd5b613e1f8a828b016139b0565b9096509450613e32905060608901613761565b92506080880135915060a0880135905092959891949750929550565b5f8060408385031215613e5f575f80fd5b613e68836131f0565b946020939093013593505050565b600181811c90821680613e8a57607f821691505b602082108103613ec1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613ef4575f80fd5b8260051b80858437919091019392505050565b5f8184825b85811015613f355760ff613f1f83613761565b1683526020928301929190910190600101613f0c565b509095945050505050565b5f613f4d6134e7846134a5565b80848252602080830192508560051b850136811115613f6a575f80fd5b855b81811015613fa457803567ffffffffffffffff811115613f8a575f80fd5b613f9636828a016132d5565b865250938201938201613f6c565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff82811682821603908082111561402557614025613fdd565b5092915050565b808202811582820484141761110d5761110d613fdd565b8181038181111561110d5761110d613fdd565b5f60208284031215614066575f80fd5b5051919050565b5f6020828403121561407d575f80fd5b61113f82613761565b5f826140b9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140f1575f80fd5b83018035915067ffffffffffffffff82111561410b575f80fd5b602001915036819003821315613109575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b838110156141575781518552938201939082019060010161413b565b50929695505050505050565b5f8083545f60018260011c9150600183168061418057607f831692505b602080841082036141b8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b8180156141cc57600181146141ff5761422a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284151585028901965061422a565b5f8a8152602090205f5b868110156142225781548b820152908501908301614209565b505084890196505b509498975050505050505050565b5f8282518085526020808601955060208260051b840101602086015f5b848110156142a1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261428f838351613175565b98840198925090830190600101614255565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b818110156143125784518316865294830194938301936001016142f4565b50505050508281036060840152614329818a613ad2565b9050828103608084015261433d8189614238565b905082810360a08401526143518188614238565b61ffff871660c0850152905061ffff851660e084015282810361010084015261437a8185613175565b9c9b505050505050505050505050565b828152604060208201525f611f126040830184613175565b5f82516143b3818460208701613153565b9190910192915050565b8082018082111561110d5761110d613fdd565b5f815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156144175780818460040360031b1b83161693505b505050919050565b84815260ff84166020820152826040820152608060608201525f610e506080830184613175565b606081525f6144586060830186613175565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff8316604083015294935050505056fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d71756f72756da26469706673582212206e4e4f61da996630edc3dbc3da375d7883f0096457851e1f33c6f873dd626fa564736f6c63430008170033a2646970667358221220be649c264c1748c7384c675f9ee9b30301ada4b3413a2b7a83c979a02ea4756c64736f6c63430008170033" } diff --git a/modules/m-core/bytecode/PowerBootstrapToken.json b/modules/m-core/bytecode/PowerBootstrapToken.json index c2e60ced..fef78d4c 100644 --- a/modules/m-core/bytecode/PowerBootstrapToken.json +++ b/modules/m-core/bytecode/PowerBootstrapToken.json @@ -1 +1 @@ -{ "bytecode": "0x60a060405234801561000f575f80fd5b5060405161043a38038061043a83398101604081905261002e916101df565b8151815180821461006057604051631f4bb7c160e31b8152600481018390526024810182905260440160405180910390fd5b5f805b838110156100d85784818151811061007d5761007d6102a8565b60200260200101515f80888481518110610099576100996102a8565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20819055826100ce91906102bc565b9150600101610063565b506001600160f01b03811061010057604051630f1da21760e41b815260040160405180910390fd5b608052506102e192505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156101495761014961010d565b604052919050565b5f6001600160401b038211156101695761016961010d565b5060051b60200190565b5f82601f830112610182575f80fd5b8151602061019761019283610151565b610121565b8083825260208201915060208460051b8701019350868411156101b8575f80fd5b602086015b848110156101d457805183529183019183016101bd565b509695505050505050565b5f80604083850312156101f0575f80fd5b82516001600160401b0380821115610206575f80fd5b818501915085601f830112610219575f80fd5b8151602061022961019283610151565b82815260059290921b84018101918181019089841115610247575f80fd5b948201945b838610156102795785516001600160a01b038116811461026a575f80fd5b8252948201949082019061024c565b91880151919650909350505080821115610291575f80fd5b5061029e85828601610173565b9150509250929050565b634e487b7160e01b5f52603260045260245ffd5b808201808211156102db57634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516101426102f85f395f609101526101425ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c8063406f84de146100385780635c7e5d5f14610080575b5f80fd5b61006e6100463660046100b3565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b60405190815260200160405180910390f35b61006e61008e3660046100f5565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80604083850312156100c4575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146100e7575f80fd5b946020939093013593505050565b5f60208284031215610105575f80fd5b503591905056fea26469706673582212207e8ea8530925c46887596dd5aa3537101f6d7860bb5dda1455cdea00c1bb6b0164736f6c63430008170033" } +{ "bytecode": "0x60a060405234801561000f575f80fd5b5060405161044f38038061044f83398101604081905261002e916101f4565b8151815180821461006057604051631f4bb7c160e31b8152600481018390526024810182905260440160405180910390fd5b5f805b838110156100ed575f85828151811061007e5761007e6102bd565b60200260200101519050805f8089858151811061009d5761009d6102bd565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f8282546100d291906102d1565b909155506100e2905081846102d1565b925050600101610063565b506001600160f01b03811061011557604051630f1da21760e41b815260040160405180910390fd5b608052506102f692505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561015e5761015e610122565b604052919050565b5f6001600160401b0382111561017e5761017e610122565b5060051b60200190565b5f82601f830112610197575f80fd5b815160206101ac6101a783610166565b610136565b8083825260208201915060208460051b8701019350868411156101cd575f80fd5b602086015b848110156101e957805183529183019183016101d2565b509695505050505050565b5f8060408385031215610205575f80fd5b82516001600160401b038082111561021b575f80fd5b818501915085601f83011261022e575f80fd5b8151602061023e6101a783610166565b82815260059290921b8401810191818101908984111561025c575f80fd5b948201945b8386101561028e5785516001600160a01b038116811461027f575f80fd5b82529482019490820190610261565b918801519196509093505050808211156102a6575f80fd5b506102b385828601610188565b9150509250929050565b634e487b7160e01b5f52603260045260245ffd5b808201808211156102f057634e487b7160e01b5f52601160045260245ffd5b92915050565b60805161014261030d5f395f609101526101425ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c8063406f84de146100385780635c7e5d5f14610080575b5f80fd5b61006e6100463660046100b3565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b60405190815260200160405180910390f35b61006e61008e3660046100f5565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80604083850312156100c4575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146100e7575f80fd5b946020939093013593505050565b5f60208284031215610105575f80fd5b503591905056fea2646970667358221220e6033888422bdd88cc40074d1a858dcd1604e13e11119fac99b62ada75c8a2c564736f6c63430008170033" } diff --git a/modules/m-core/bytecode/PowerToken.json b/modules/m-core/bytecode/PowerToken.json index 7ed05936..926a2a44 100644 --- a/modules/m-core/bytecode/PowerToken.json +++ b/modules/m-core/bytecode/PowerToken.json @@ -1 +1 @@ -{ "bytecode": "0x6101a0604052600d80546001600160f01b031916620f424017905534801562000026575f80fd5b50604051620056e5380380620056e583398101604081905262000049916200059b565b6040518060400160405280600c81526020016b0506f776572206279204d5e360a41b815250604051806040016040528060058152602001642827aba2a960d91b8152505f600a6127106200009e91906200061d565b8383838282828280805f620000b48282620006dd565b5046608052620000c362000328565b60a0525060039150620000d990508382620006dd565b5060ff1660c05250505061271061ffff8416111591506200010f9050576040516368c6e15960e01b815260040160405180910390fd5b61ffff1660e0525050506001600160a01b0384166101008190526200014757604051635345eea560e01b815260040160405180910390fd5b6001600160a01b0383166101208190526200017557604051637301473d60e11b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b038416908117909155620001b157604051634e71231360e11b815260040160405180910390fd5b6001600160a01b038116610140819052620001df57604051630306120160e01b815260040160405180910390fd5b5f6001620001ec620003c4565b620001f89190620007a9565b61ffff16610160819052604051635c7e5d5f60e01b8152600481018290529091505f906001600160a01b03871690635c7e5d5f90602401602060405180830381865afa1580156200024b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002719190620007ce565b9050805f036200029457604051637d5b431760e11b815260040160405180910390fd5b6001600160f01b03811115620002bd576040516303ca7dbd60e61b815260040160405180910390fd5b6001600160f01b03811661018052620002d9620f4240620003d4565b604051620f424081526001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050620008c5565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516200035c9190620007e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f620003cf620003f2565b905090565b620003ed60056200197a6200042060201b178362000436565b505050565b5f6213c68062000407636322c9624262000860565b62000413919062000876565b620003cf9060016200088c565b5f6200042d8284620008a2565b90505b92915050565b5f808062000443620003c4565b86549091505f819003620004bc578660405180604001604052808461ffff168152602001620004735f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000577915050565b5f19015f620004d388835f91825260209091200190565b80546201000090046001600160f01b031695509050620004f5858760208a901c565b815490945061ffff90811690841611156200055a576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e81529190912094519151909216620100000292169190911791015562000573565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b80516001600160a01b038116811462000596575f80fd5b919050565b5f805f8060808587031215620005af575f80fd5b620005ba856200057f565b9350620005ca602086016200057f565b9250620005da604086016200057f565b9150620005ea606086016200057f565b905092959194509250565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f61ffff80841680620006345762000634620005f5565b92169190910492915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200066957607f821691505b6020821081036200068857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003ed57805f5260205f20601f840160051c81016020851015620006b55750805b601f840160051c820191505b81811015620006d6575f8155600101620006c1565b5050505050565b81516001600160401b03811115620006f957620006f962000640565b62000711816200070a845462000654565b846200068e565b602080601f83116001811462000747575f84156200072f5750858301515b5f19600386901b1c1916600185901b178555620007a1565b5f85815260208120601f198616915b82811015620007775788860151825594840194600190910190840162000756565b50858210156200079557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61ffff828116828216039080821115620007c757620007c762000609565b5092915050565b5f60208284031215620007df575f80fd5b5051919050565b5f808354620007f58162000654565b60018281168015620008105760018114620008265762000854565b60ff198416875282151583028701945062000854565b875f526020805f205f5b858110156200084b5781548a82015290840190820162000830565b50505082870194505b50929695505050505050565b8181038181111562000430576200043062000609565b5f82620008875762000887620005f5565b500490565b8082018082111562000430576200043062000609565b6001600160f01b03818116838216019080821115620007c757620007c762000609565b60805160a05160c05160e0516101005161012051610140516101605161018051614d5f620009865f395f6137f701525f81816103fe01528181611a99015281816129db01528181612a4a01528181613160015281816131b40152613eb401525f818161094901526112a801525f818161056a0152611b4f01525f81816104f0015281816132b0015261383e01525f8181610788015281816117b7015281816126ad015261396d01525f6104af01525f610d7101525f610d3c0152614d5f5ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c806388b7ab63116101d4578063c2ee3a0811610109578063dd62ed3e116100a9578063edc41f6411610079578063edc41f641461090b578063ef55bec61461091e578063f8520c0814610931578063fbfa77cf14610944575f80fd5b8063dd62ed3e1461087a578063e3ee160e146108a4578063e7a324dc146108b7578063e94a0102146108de575f80fd5b8063c8f4a893116100e4578063c8f4a89314610825578063cf0929951461082d578063d505accf14610840578063d916948714610853575f80fd5b8063c2ee3a08146107f6578063c3cda520146107ff578063c580b26914610812575f80fd5b8063a584119411610174578063a9059cbb1161014f578063a9059cbb146107aa578063ac9ebbd0146107bd578063ace150a5146107d0578063b7b72899146107e3575f80fd5b8063a584119414610768578063a72246871461077b578063a797d91614610783575f80fd5b80639ab24eb0116101af5780639ab24eb0146107085780639fd5a6cf1461071b578063a08cb48b1461072e578063a0cc6a6814610741575f80fd5b806388b7ab63146106ce57806391ddadf4146106e157806395d89b4114610700575f80fd5b8063406f84de116102b55780635c19a95c116102555780637b3a3d19116102255780637b3a3d19146106245780637ecebe001461066d5780637f2eecc31461068c57806384b0196e146106b3575f80fd5b80635c19a95c146105d85780635c7e5d5f146105eb57806370a08231146105fe57806377eea14614610611575f80fd5b8063532992c511610290578063532992c51461058c578063587cde1e1461059f5780635a049a70146105b25780635a4dd47d146105c5575f80fd5b8063406f84de1461054a5780634bf5d7e91461055d5780634d6d744114610565575f80fd5b80632a1eafd911610320578063313ce567116102fb578063313ce567146104aa5780633644e515146104e3578063397da79d146104eb5780633a46b1a814610537575f80fd5b80632a1eafd9146104715780632ff2e9dc1461047957806330adf81f14610483575f80fd5b80630db3a5581161035b5780630db3a558146103f957806318160ddd1461043357806323b872dd14610449578063286b1d0b1461045c575f80fd5b806306fdde0314610381578063095ea7b31461039f57806309dc8d92146103c2575b5f80fd5b61038961096b565b6040516103969190614294565b60405180910390f35b6103b26103ad3660046142ce565b6109fa565b6040519015158152602001610396565b6103ca610a10565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610396565b61043b610aa1565b604051908152602001610396565b6103b26104573660046142f6565b610ad2565b61046f61046a36600461432f565b610bc5565b005b61043b610d30565b6103ca620f424081565b61043b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104d17f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610396565b61043b610d39565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b61043b6105453660046142ce565b610d93565b61043b6105583660046142ce565b610ddb565b610389610dfb565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b61046f61059a366004614348565b610e05565b6105126105ad36600461432f565b610e2a565b61046f6105c036600461438e565b610e40565b61043b6105d33660046143d8565b610e67565b61046f6105e636600461432f565b610f8d565b61043b6105f93660046143d8565b610f9a565b61043b61060c36600461432f565b610fe0565b61051261061f3660046142ce565b611018565b6106376106323660046143ef565b611044565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610396565b61043b61067b36600461432f565b60016020525f908152604090205481565b61043b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b6106bb61130f565b604051610396979695949392919061443a565b61046f6106dc3660046145ce565b611447565b6106e9611476565b60405165ffffffffffff9091168152602001610396565b610389611488565b61043b61071636600461432f565b611514565b61046f61072936600461464d565b611526565b61046f61073c3660046146ba565b611536565b61043b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61046f61077636600461432f565b611560565b6105126115ac565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b6103b26107b83660046142ce565b611607565b61043b6107cb36600461471c565b611613565b61046f6107de3660046146ba565b61161f565b61046f6107f136600461474c565b61163f565b61042061271081565b61046f61080d36600461479f565b61165c565b61046f61082036600461432f565b611696565b61046f6116a7565b61046f61083b3660046145ce565b6118c0565b61046f61084e3660046147f3565b6118e0565b61043b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b61043b610888366004614858565b600460209081525f928352604080842090915290825290205481565b61046f6108b2366004614889565b6118f0565b61043b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6103b26108ec3660046142ce565b600260209081525f928352604080842090915290825290205460ff1681565b61046f61091936600461464d565b61191b565b61046f61092c366004614889565b611947565b6103b261093f3660046142ce565b611967565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60605f805461097990614901565b80601f01602080910402602001604051908101604052809291908181526020018280546109a590614901565b80156109f05780601f106109c7576101008083540402835291602001916109f0565b820191905f5260205f20905b8154815290600101906020018083116109d357829003601f168201915b5050505050905090565b5f610a06338484611985565b5060015b92915050565b5f610a21610a1c6119f2565b6119fb565b15610a2b57505f90565b5f610a34611a15565b90505f610a47610a426119f2565b611a96565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1611610a96575f610a9a565b8082035b9250505090565b5f610aad610a426119f2565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bad5782811015610b78576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b610bb8858585611adf565b60019150505b9392505050565b610bcd611b37565b73ffffffffffffffffffffffffffffffffffffffff8116610c1a576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c236119f2565b90505f610c31826001614979565b600a5490915061ffff90811690831610610cba57600b54600a80547fffffffffffffffffffff000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff83161790555b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915560405161ffff8316907f9f25fdcf794a19f398e3f72072c7ced095c8dedada1ce1fcd07194d1241bb2e0905f90a3505050565b5f610aad611a15565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610d6e57610d69611ba8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610d9e83611c42565b9050610da981611c83565b610db38482611ce1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b5f80610de683611c42565b9050610df181611c83565b610db38482611cef565b6060610d69611cfd565b610e1a84610e138686611d1d565b8484611d91565b610e248484611da5565b50505050565b5f610a0a82610e376119f2565b61ffff16611e33565b610e5685610e4e8787611d1d565b858585611f14565b610e608585611da5565b5050505050565b5f80610e716119f2565b90505f610e7d826119fb565b610e8e57610e89611f24565b610e93565b6213c6805b90505f610ea460646213c6806149c1565b90505f610eb182846149c1565b64ffffffffff166001901b90505f8284610ecb91906149e4565b9050610f82600183901c610edf8386614a07565b64ffffffffff16610ef09190614a25565b610f018464ffffffffff8516614a25565b610f0b9190614a3c565b610f1489611f58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f3e9190614a25565b610f4c610a42600189614a4f565b610f7d907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1664ffffffffff8716614a25565b611fb1565b979650505050505050565b610f97338261202c565b50565b5f80610fa583611c42565b9050610fb081611c83565b610fb981611a96565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610ff282610fed6119f2565b611cef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f8061102383611c42565b905061102e81611c83565b61103c848261ffff16611e33565b949350505050565b5f808261ffff166110536119f2565b61ffff16111561108f576040517fc32cae0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158061109a575084155b156110d1576040517f31e5050700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110da610a10565b90505f6110e688611f58565b90505f6110f288611f58565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16116111415782611143565b805b9450817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16857dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610156111e9576040517f557b2dbd0000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808516600483015283166024820152604401610b6f565b337fbb7c3dcaa7b43f7670119fdaf5a34790f80be05722782103263b2f6a83496238866112357dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216610e67565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083018290529097500160405180910390a261129a87867dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612072565b6112cd6112a56115ac565b337f00000000000000000000000000000000000000000000000000000000000000008761208d565b611303576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505094509492505050565b5f606080828080838146308280604051908082528060200260200182016040528015611345578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461137890614901565b80601f01602080910402602001604051908101604052809291908181526020018280546113a490614901565b80156113ef5780601f106113c6576101008083540402835291602001916113ef565b820191905f5260205f20905b8154815290600101906020018083116113d257829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b61145f8761145989898989898961212d565b836121a9565b61146d8787878787876121f4565b50505050505050565b5f61147f6119f2565b61ffff16905090565b6003805461149590614901565b80601f01602080910402602001604051908101604052809291908181526020018280546114c190614901565b801561150c5780601f106114e35761010080835404028352916020019161150c565b820191905f5260205f20905b8154815290600101906020018083116114ef57829003601f168201915b505050505081565b5f610ff2826115216119f2565b611ce1565b610e608561145987878787612277565b61154888610e138a8a8a8a8a8a61212d565b6115568888888888886121f4565b5050505050505050565b61156981612314565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7c0c782cfb9e4eead85a014c03770fc21db63aea6d76999f12599b5f87b45e5d905f90a250565b600a545f9061ffff166115bd6119f2565b61ffff1610156115ea5750600a5462010000900473ffffffffffffffffffffffffffffffffffffffff1690565b50600b5473ffffffffffffffffffffffffffffffffffffffff1690565b5f610a06338484611adf565b5f61103c848484612326565b61163188610e138a8a8a8a8a8a61238a565b611556888888888888612406565b61164d836114598585611d1d565b6116578383611da5565b505050565b5f611668878787612326565b90505f6116778286868661251f565b905061168286612543565b61168c8188612586565b611556818961202c565b61169e611b37565b610f97816125f7565b6116af611b37565b5f6116b86119f2565b90505f6116c4826119fb565b6116cf5760016116d2565b60025b6116df9060ff1683614979565b600b5490915061ffff740100000000000000000000000000000000000000009091048116908316106117a457600d54600c80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055600b805461ffff831674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9091161790555b600c545f9061183c9061271090611800907f000000000000000000000000000000000000000000000000000000000000000061ffff16907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a25565b61180a9190614a6a565b600c5461183791907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a3c565b61276b565b600d80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83169081179091556040519192509061ffff8416907f96314a09a36c5d72a0a2217d361631d67fa044438d6568c1c4436d10aeec76f7905f90a3505050565b6118d28761145989898989898961238a565b61146d878787878787612406565b61146d87610e4e89898989612277565b61190289610e4e8b8b8b8b8b8b61238a565b611910898989898989612406565b505050505050505050565b61192482612543565b61193385611459868686612326565b61193d8584612586565b610e60858561202c565b61195989610e4e8b8b8b8b8b8b61212d565b6119108989898989896121f4565b5f610bbe8361197584611c42565b612794565b5f610bbe8284614a7d565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610d6961286b565b5f611a07600283614ab4565b61ffff166001149050919050565b600b545f9074010000000000000000000000000000000000000000900461ffff16611a3e6119f2565b61ffff161015611a6f5750600c547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b50600d547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168261ffff161115611ad557611ad082612893565b610a0a565b620f424092915050565b611ae761289f565b611af083612314565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b2c57611b2c82612314565b6116578383836128e1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611ba6576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611bda9190614ac8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f61ffff821115611c7f576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611c8c6119f2565b90508061ffff168261ffff1610611cdd576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff808416600483015282166024820152604401610b6f565b5050565b5f610bbe83836129aa6129d8565b5f610bbe8383612a7c6129d8565b60606040518060a0016040528060658152602001614cc560659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610bbe906080015b60405160208183030381529060405280519060200120612ada565b610e24611da085858585612b3b565b612b76565b611daf8282612d3a565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611e6d576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b8015611f0b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611ecf83835f91825260209091200190565b805490915061ffff168510611f05575462010000900473ffffffffffffffffffffffffffffffffffffffff169250610a0a915050565b50611e94565b50929392505050565b610e60611da08686868686612dc3565b5f426213c680611f3261286b565b61ffff16611f409190614b9d565b611f4e90636322c962614bc6565b610d699190614a07565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611c7f576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f03611feb576040517f23d359a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611ff957505f610a0a565b8161200661271085614a25565b6120109190614a3c565b905081600182038161202457612024614994565b049392505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120685761206881612314565b611cdd8282612e0b565b61207a61289f565b61208382612314565b611cdd8282612e26565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790525f90612124908690612eec565b95945050505050565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b5f6121b5848484612fa0565b90505f8160058111156121ca576121ca614be4565b036121d55750505050565b6121e0848484612fe4565b156121eb5750505050565b610e2481612b76565b3373ffffffffffffffffffffffffffffffffffffffff861614612261576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff86166024820152604401610b6f565b61226f868686868686612406565b505050505050565b5f61228182612543565b61228c858585611985565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c081018390526121249060e001611d76565b61231d8161312c565b610f9781613374565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f9061103c9060a001611d76565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b824211612448576040517f498ff9a200000000000000000000000000000000000000000000000000000000815242600482015260248101849052604401610b6f565b81421061248a576040517fb3fcd33e00000000000000000000000000000000000000000000000000000000815242600482015260248101839052604401610b6f565b6124948682612d3a565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a361226f868686611adf565b5f8061252d86868686613426565b9250905061253a81612b76565b50949350505050565b80421115610f97576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101829052426024820152604401610b6f565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114611657576040517fd021c5570000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610b6f565b6125ff613533565b5f6126086119f2565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526009602052604090209091506126399082613574565b61266f576040517f22ce1a0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61267882612314565b5f6126d86126868484611ce1565b5f6127107dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000061ffff16020492915050565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811615612758576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815230905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6127618161361d565b611657838261362b565b5f610a0a827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613638565b5f8161ffff165f036127d2576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260096020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61283483835f91825260209091200190565b5461ffff9081169150851681111561284c57506127f9565b8461ffff168161ffff16149350505050610a0a565b505f949350505050565b5f6213c68061287e636322c96242614c11565b6128889190614a6a565b610d69906001614a3c565b5f610a0a60058361364d565b6128aa610a1c6119f2565b15611ba6576040517f66f21c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128ea8261371a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161294991815260200190565b60405180910390a35f61295b82611f58565b90505f6129666119f2565b9050612972858361377f565b612989612983868361ffff16611e33565b8361378c565b6129938483613799565b610e606129a4858361ffff16611e33565b8361362b565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120610bbe908361364d565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168361ffff1611612a1957612a1284846137a6565b9050610bbe565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600660205260408120549003612a6e57612a12847f00000000000000000000000000000000000000000000000000000000000000006137a6565b61103c84848463ffffffff16565b5f610bbe612a8a84846138b7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ab48585613a58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160161276b565b5f612ae3610d39565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612b49868686613a86565b90925090505f826005811115612b6157612b61614be4565b14612b6c5781610f82565b610f828782613ace565b5f816005811115612b8957612b89614be4565b03612b915750565b6001816005811115612ba557612ba5614be4565b03612bdc576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612bf057612bf0614be4565b03612c27576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612c3b57612c3b614be4565b03612c72576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612c8657612c86614be4565b03612cbd576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612cd157612cd1614be4565b03612d08576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615611cdd576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610b6f565b5f805f612dd287878787613426565b90925090505f826005811115612dea57612dea614be4565b14612df55781612dff565b612dff8882613ace565b98975050505050505050565b612e1361289f565b612e1c82612314565b611cdd8282613b11565b612e2f8261371a565b805f03612e6b576040517f77b8dde300000000000000000000000000000000000000000000000000000000815260048101829052602401610b6f565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f612ec282611f58565b9050612ecd8161361d565b612ed78382613799565b611657612ee684610e376119f2565b8261362b565b5f73ffffffffffffffffffffffffffffffffffffffff83163b612f1057505f610a0a565b60608373ffffffffffffffffffffffffffffffffffffffff1683604051612f379190614c24565b5f604051808303815f865af19150503d805f8114612f70576040519150601f19603f3d011682016040523d82523d5f602084013e612f75565b606091505b50909250905081801561103c57508051158061103c57508080602001905181019061103c9190614c3f565b5f805f612fad8585613b7c565b90925090505f826005811115612fc557612fc5614be4565b14612fd05781612fda565b612fda8682613ace565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401613011929190614c5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516130929190614c24565b5f60405180830381855afa9150503d805f81146130ca576040519150601f19603f3d011682016040523d82523d5f602084013e6130cf565b606091505b50915091508180156130e357506020815110155b8015612fda575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906131219083016020908101908401614c76565b149695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260066020526040902054156131595750565b5f613184827f00000000000000000000000000000000000000000000000000000000000000006137a6565b73ffffffffffffffffffffffffffffffffffffffff83165f818152600660209081526040808320815180830183527f000000000000000000000000000000000000000000000000000000000000000061ffff9081168083527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff898116848801818152865460018082018955978b52898b2096519151918616620100009285168302179601959095559888526008875285882086518088019097529186528587018981528254958601835591885295872094519051911694160292909217910155919250900361326f575050565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff808416917f0000000000000000000000000000000000000000000000000000000000000000909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3604080515f81527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff8416917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050565b5f613386826133816119f2565b6138b7565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81161561341c576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff83169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611cdd8282613799565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561345b5750600390505f61352a565b8460ff16601b1415801561347357508460ff16601c14155b156134835750600490505f61352a565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156134d3573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615613521575f81613525565b60015f5b915091505b94509492505050565b61353e610a1c6119f2565b611ba6576040517f90bfab2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f908015806135b857505f8481526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015461ffff908116908416115b915081156136165760408051602080820190925261ffff858116825286546001810188555f8881529390932091519190920180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016919092161790555b5092915050565b611657600561197a83613bc0565b611cdd82613d7f83613d83565b5f8183106136465781610bbe565b5090919050565b5f8161ffff165f0361368b576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015613711577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6136c985835f91825260209091200190565b805490915061ffff80861691161161370b57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150610a0a9050565b5061368e565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610f97576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610b6f565b611cdd82613e3383613e3e565b611cdd82613e3383613d83565b611cdd82613d7f83613e3e565b6040517f406f84de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015261ffff831660248301525f917f00000000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691620f4240917f00000000000000000000000000000000000000000000000000000000000000009091169063406f84de90604401602060405180830381865afa158015613885573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138a99190614c76565b028161202457612024614994565b5f806138c38484613e6d565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f036138f5575f915050610a0a565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81165f6139258661ffff8716611e33565b90505f6139328787613e78565b90505b8561ffff168161ffff161015613a2d5761394e816119fb565b1580613961575061395f8282612794565b155b613a255761271061ffff7f0000000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851602047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16830192507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80168310613a25575050507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff039050610a0a565b600101613935565b50612fda7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841683614c11565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600660205260408120610bbe908361364d565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416613abf87838884613426565b9350935050505b935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613b09576005610bbe565b505f92915050565b5f613b1c8284613ed9565b90505f613b298483613f02565b90505f613b3885610fed6119f2565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03613b68575050505050565b613b72828261378c565b610e60838261362b565b5f808251604114613b925750600290505f613bb9565b6020830151604084015160608501515f1a9190613bb187848484613426565b945094505050505b9250929050565b5f805f613bcb6119f2565b86549091505f819003613c5b578660405180604001604052808461ffff168152602001613bfc5f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250613ac6915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f613c9088835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050613cca858763ffffffff8a16565b815490945061ffff9081169084161115613d44576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155613d74565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b0190565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526008602052604081208190613db4908585613bc0565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f610bbe8284614c8d565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610e60908383613bc0565b5f610bbe8383613a58565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081205415613eb157613eac8383614168565b610bbe565b507f000000000000000000000000000000000000000000000000000000000000000092915050565b5f73ffffffffffffffffffffffffffffffffffffffff831615613efc5782610bbe565b50919050565b5f80613f0c6119f2565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260076020526040812080549293509190819003613ff85760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4859350505050610a0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61402d83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff908116908516111561411a576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff00000000000000000000000000000000000000000000909116939092169290921717905561415e565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f8161ffff165f036141a6576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260066020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61420883835f91825260209091200190565b5461ffff908116915085168111614223579250610a0a915050565b506141cd565b5f5b8381101561424357818101518382015260200161422b565b50505f910152565b5f8151808452614262816020860160208601614229565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610bbe602083018461424b565b803573ffffffffffffffffffffffffffffffffffffffff811681146142c9575f80fd5b919050565b5f80604083850312156142df575f80fd5b6142e8836142a6565b946020939093013593505050565b5f805f60608486031215614308575f80fd5b614311846142a6565b925061431f602085016142a6565b9150604084013590509250925092565b5f6020828403121561433f575f80fd5b610bbe826142a6565b5f805f806080858703121561435b575f80fd5b614364856142a6565b966020860135965060408601359560600135945092505050565b803560ff811681146142c9575f80fd5b5f805f805f60a086880312156143a2575f80fd5b6143ab866142a6565b9450602086013593506143c06040870161437e565b94979396509394606081013594506080013592915050565b5f602082840312156143e8575f80fd5b5035919050565b5f805f8060808587031215614402575f80fd5b8435935060208501359250614419604086016142a6565b9150606085013561ffff8116811461442f575f80fd5b939692955090935050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261447660e084018a61424b565b8381036040850152614488818a61424b565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156144e8578351835292840192918401916001016144cc565b50909c9b505050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112614536575f80fd5b813567ffffffffffffffff80821115614551576145516144fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715614597576145976144fa565b816040528381528660208588010111156145af575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a0312156145e4575f80fd5b6145ed886142a6565b96506145fb602089016142a6565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115614632575f80fd5b61463e8a828b01614527565b91505092959891949750929550565b5f805f805f60a08688031215614661575f80fd5b61466a866142a6565b9450614678602087016142a6565b93506040860135925060608601359150608086013567ffffffffffffffff8111156146a1575f80fd5b6146ad88828901614527565b9150509295509295909350565b5f805f805f805f80610100898b0312156146d2575f80fd5b6146db896142a6565b97506146e960208a016142a6565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561472e575f80fd5b614737846142a6565b95602085013595506040909401359392505050565b5f805f6060848603121561475e575f80fd5b614767846142a6565b925060208401359150604084013567ffffffffffffffff811115614789575f80fd5b61479586828701614527565b9150509250925092565b5f805f805f8060c087890312156147b4575f80fd5b6147bd876142a6565b955060208701359450604087013593506147d96060880161437e565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a031215614809575f80fd5b614812886142a6565b9650614820602089016142a6565b9550604088013594506060880135935061483c6080890161437e565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215614869575f80fd5b614872836142a6565b9150614880602084016142a6565b90509250929050565b5f805f805f805f805f6101208a8c0312156148a2575f80fd5b6148ab8a6142a6565b98506148b960208b016142a6565b975060408a0135965060608a0135955060808a0135945060a08a013593506148e360c08b0161437e565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061491557607f821691505b602082108103613efc577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f64ffffffffff808416806149d8576149d8614994565b92169190910492915050565b5f64ffffffffff808416806149fb576149fb614994565b92169190910692915050565b64ffffffffff8281168282160390808211156136165761361661494c565b8082028115828204841417610a0a57610a0a61494c565b80820180821115610a0a57610a0a61494c565b61ffff8281168282160390808211156136165761361661494c565b5f82614a7857614a78614994565b500490565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156136165761361661494c565b5f61ffff808416806149fb576149fb614994565b5f8083545f60018260011c91506001831680614ae557607f831692505b60208084108203614b1d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b315760018114614b6457614b8f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b8f565b5f8a8152602090205f5b86811015614b875781548b820152908501908301614b6e565b505084890196505b509498975050505050505050565b64ffffffffff818116838216028082169190828114614bbe57614bbe61494c565b505092915050565b64ffffffffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b81810381811115610a0a57610a0a61494c565b5f8251614c35818460208701614229565b9190910192915050565b5f60208284031215614c4f575f80fd5b81518015158114610bbe575f80fd5b828152604060208201525f61103c604083018461424b565b5f60208284031215614c86575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156136165761361661494c56fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220e4d1f2d9e23b6efbe8ae961fae941c8e17ad101d54447c6d42cc5d1b9aa1d69664736f6c63430008170033" } +{ "bytecode": "0x6101a0604052600d80546001600160f01b031916620f424017905534801562000026575f80fd5b50604051620056e5380380620056e583398101604081905262000049916200059b565b6040518060400160405280600c81526020016b0506f776572206279204d5e360a41b815250604051806040016040528060058152602001642827aba2a960d91b8152505f600a6127106200009e91906200061d565b8383838282828280805f620000b48282620006dd565b5046608052620000c362000328565b60a0525060039150620000d990508382620006dd565b5060ff1660c05250505061271061ffff8416111591506200010f9050576040516368c6e15960e01b815260040160405180910390fd5b61ffff1660e0525050506001600160a01b0384166101008190526200014757604051635345eea560e01b815260040160405180910390fd5b6001600160a01b0383166101208190526200017557604051637301473d60e11b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b038416908117909155620001b157604051634e71231360e11b815260040160405180910390fd5b6001600160a01b038116610140819052620001df57604051630306120160e01b815260040160405180910390fd5b5f6001620001ec620003c4565b620001f89190620007a9565b61ffff16610160819052604051635c7e5d5f60e01b8152600481018290529091505f906001600160a01b03871690635c7e5d5f90602401602060405180830381865afa1580156200024b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002719190620007ce565b9050805f036200029457604051637d5b431760e11b815260040160405180910390fd5b6001600160f01b03811115620002bd576040516303ca7dbd60e61b815260040160405180910390fd5b6001600160f01b03811661018052620002d9620f4240620003d4565b604051620f424081526001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050620008c5565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516200035c9190620007e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f620003cf620003f2565b905090565b620003ed60056200197a6200042060201b178362000436565b505050565b5f6213c6806200040763661bd3504262000860565b62000413919062000876565b620003cf9060016200088c565b5f6200042d8284620008a2565b90505b92915050565b5f808062000443620003c4565b86549091505f819003620004bc578660405180604001604052808461ffff168152602001620004735f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000577915050565b5f19015f620004d388835f91825260209091200190565b80546201000090046001600160f01b031695509050620004f5858760208a901c565b815490945061ffff90811690841611156200055a576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e81529190912094519151909216620100000292169190911791015562000573565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b80516001600160a01b038116811462000596575f80fd5b919050565b5f805f8060808587031215620005af575f80fd5b620005ba856200057f565b9350620005ca602086016200057f565b9250620005da604086016200057f565b9150620005ea606086016200057f565b905092959194509250565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f61ffff80841680620006345762000634620005f5565b92169190910492915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200066957607f821691505b6020821081036200068857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003ed57805f5260205f20601f840160051c81016020851015620006b55750805b601f840160051c820191505b81811015620006d6575f8155600101620006c1565b5050505050565b81516001600160401b03811115620006f957620006f962000640565b62000711816200070a845462000654565b846200068e565b602080601f83116001811462000747575f84156200072f5750858301515b5f19600386901b1c1916600185901b178555620007a1565b5f85815260208120601f198616915b82811015620007775788860151825594840194600190910190840162000756565b50858210156200079557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61ffff828116828216039080821115620007c757620007c762000609565b5092915050565b5f60208284031215620007df575f80fd5b5051919050565b5f808354620007f58162000654565b60018281168015620008105760018114620008265762000854565b60ff198416875282151583028701945062000854565b875f526020805f205f5b858110156200084b5781548a82015290840190820162000830565b50505082870194505b50929695505050505050565b8181038181111562000430576200043062000609565b5f82620008875762000887620005f5565b500490565b8082018082111562000430576200043062000609565b6001600160f01b03818116838216019080821115620007c757620007c762000609565b60805160a05160c05160e0516101005161012051610140516101605161018051614d5f620009865f395f6137f701525f81816103fe01528181611a99015281816129db01528181612a4a01528181613160015281816131b40152613eb401525f818161094901526112a801525f818161056a0152611b4f01525f81816104f0015281816132b0015261383e01525f8181610788015281816117b7015281816126ad015261396d01525f6104af01525f610d7101525f610d3c0152614d5f5ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c806388b7ab63116101d4578063c2ee3a0811610109578063dd62ed3e116100a9578063edc41f6411610079578063edc41f641461090b578063ef55bec61461091e578063f8520c0814610931578063fbfa77cf14610944575f80fd5b8063dd62ed3e1461087a578063e3ee160e146108a4578063e7a324dc146108b7578063e94a0102146108de575f80fd5b8063c8f4a893116100e4578063c8f4a89314610825578063cf0929951461082d578063d505accf14610840578063d916948714610853575f80fd5b8063c2ee3a08146107f6578063c3cda520146107ff578063c580b26914610812575f80fd5b8063a584119411610174578063a9059cbb1161014f578063a9059cbb146107aa578063ac9ebbd0146107bd578063ace150a5146107d0578063b7b72899146107e3575f80fd5b8063a584119414610768578063a72246871461077b578063a797d91614610783575f80fd5b80639ab24eb0116101af5780639ab24eb0146107085780639fd5a6cf1461071b578063a08cb48b1461072e578063a0cc6a6814610741575f80fd5b806388b7ab63146106ce57806391ddadf4146106e157806395d89b4114610700575f80fd5b8063406f84de116102b55780635c19a95c116102555780637b3a3d19116102255780637b3a3d19146106245780637ecebe001461066d5780637f2eecc31461068c57806384b0196e146106b3575f80fd5b80635c19a95c146105d85780635c7e5d5f146105eb57806370a08231146105fe57806377eea14614610611575f80fd5b8063532992c511610290578063532992c51461058c578063587cde1e1461059f5780635a049a70146105b25780635a4dd47d146105c5575f80fd5b8063406f84de1461054a5780634bf5d7e91461055d5780634d6d744114610565575f80fd5b80632a1eafd911610320578063313ce567116102fb578063313ce567146104aa5780633644e515146104e3578063397da79d146104eb5780633a46b1a814610537575f80fd5b80632a1eafd9146104715780632ff2e9dc1461047957806330adf81f14610483575f80fd5b80630db3a5581161035b5780630db3a558146103f957806318160ddd1461043357806323b872dd14610449578063286b1d0b1461045c575f80fd5b806306fdde0314610381578063095ea7b31461039f57806309dc8d92146103c2575b5f80fd5b61038961096b565b6040516103969190614294565b60405180910390f35b6103b26103ad3660046142ce565b6109fa565b6040519015158152602001610396565b6103ca610a10565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610396565b61043b610aa1565b604051908152602001610396565b6103b26104573660046142f6565b610ad2565b61046f61046a36600461432f565b610bc5565b005b61043b610d30565b6103ca620f424081565b61043b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104d17f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610396565b61043b610d39565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b61043b6105453660046142ce565b610d93565b61043b6105583660046142ce565b610ddb565b610389610dfb565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b61046f61059a366004614348565b610e05565b6105126105ad36600461432f565b610e2a565b61046f6105c036600461438e565b610e40565b61043b6105d33660046143d8565b610e67565b61046f6105e636600461432f565b610f8d565b61043b6105f93660046143d8565b610f9a565b61043b61060c36600461432f565b610fe0565b61051261061f3660046142ce565b611018565b6106376106323660046143ef565b611044565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610396565b61043b61067b36600461432f565b60016020525f908152604090205481565b61043b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b6106bb61130f565b604051610396979695949392919061443a565b61046f6106dc3660046145ce565b611447565b6106e9611476565b60405165ffffffffffff9091168152602001610396565b610389611488565b61043b61071636600461432f565b611514565b61046f61072936600461464d565b611526565b61046f61073c3660046146ba565b611536565b61043b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61046f61077636600461432f565b611560565b6105126115ac565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b6103b26107b83660046142ce565b611607565b61043b6107cb36600461471c565b611613565b61046f6107de3660046146ba565b61161f565b61046f6107f136600461474c565b61163f565b61042061271081565b61046f61080d36600461479f565b61165c565b61046f61082036600461432f565b611696565b61046f6116a7565b61046f61083b3660046145ce565b6118c0565b61046f61084e3660046147f3565b6118e0565b61043b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b61043b610888366004614858565b600460209081525f928352604080842090915290825290205481565b61046f6108b2366004614889565b6118f0565b61043b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6103b26108ec3660046142ce565b600260209081525f928352604080842090915290825290205460ff1681565b61046f61091936600461464d565b61191b565b61046f61092c366004614889565b611947565b6103b261093f3660046142ce565b611967565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60605f805461097990614901565b80601f01602080910402602001604051908101604052809291908181526020018280546109a590614901565b80156109f05780601f106109c7576101008083540402835291602001916109f0565b820191905f5260205f20905b8154815290600101906020018083116109d357829003601f168201915b5050505050905090565b5f610a06338484611985565b5060015b92915050565b5f610a21610a1c6119f2565b6119fb565b15610a2b57505f90565b5f610a34611a15565b90505f610a47610a426119f2565b611a96565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1611610a96575f610a9a565b8082035b9250505090565b5f610aad610a426119f2565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bad5782811015610b78576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b610bb8858585611adf565b60019150505b9392505050565b610bcd611b37565b73ffffffffffffffffffffffffffffffffffffffff8116610c1a576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c236119f2565b90505f610c31826001614979565b600a5490915061ffff90811690831610610cba57600b54600a80547fffffffffffffffffffff000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff83161790555b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915560405161ffff8316907f9f25fdcf794a19f398e3f72072c7ced095c8dedada1ce1fcd07194d1241bb2e0905f90a3505050565b5f610aad611a15565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610d6e57610d69611ba8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610d9e83611c42565b9050610da981611c83565b610db38482611ce1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b5f80610de683611c42565b9050610df181611c83565b610db38482611cef565b6060610d69611cfd565b610e1a84610e138686611d1d565b8484611d91565b610e248484611da5565b50505050565b5f610a0a82610e376119f2565b61ffff16611e33565b610e5685610e4e8787611d1d565b858585611f14565b610e608585611da5565b5050505050565b5f80610e716119f2565b90505f610e7d826119fb565b610e8e57610e89611f24565b610e93565b6213c6805b90505f610ea460646213c6806149c1565b90505f610eb182846149c1565b64ffffffffff166001901b90505f8284610ecb91906149e4565b9050610f82600183901c610edf8386614a07565b64ffffffffff16610ef09190614a25565b610f018464ffffffffff8516614a25565b610f0b9190614a3c565b610f1489611f58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f3e9190614a25565b610f4c610a42600189614a4f565b610f7d907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1664ffffffffff8716614a25565b611fb1565b979650505050505050565b610f97338261202c565b50565b5f80610fa583611c42565b9050610fb081611c83565b610fb981611a96565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610ff282610fed6119f2565b611cef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f8061102383611c42565b905061102e81611c83565b61103c848261ffff16611e33565b949350505050565b5f808261ffff166110536119f2565b61ffff16111561108f576040517fc32cae0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158061109a575084155b156110d1576040517f31e5050700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110da610a10565b90505f6110e688611f58565b90505f6110f288611f58565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16116111415782611143565b805b9450817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16857dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610156111e9576040517f557b2dbd0000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808516600483015283166024820152604401610b6f565b337fbb7c3dcaa7b43f7670119fdaf5a34790f80be05722782103263b2f6a83496238866112357dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216610e67565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083018290529097500160405180910390a261129a87867dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612072565b6112cd6112a56115ac565b337f00000000000000000000000000000000000000000000000000000000000000008761208d565b611303576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505094509492505050565b5f606080828080838146308280604051908082528060200260200182016040528015611345578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461137890614901565b80601f01602080910402602001604051908101604052809291908181526020018280546113a490614901565b80156113ef5780601f106113c6576101008083540402835291602001916113ef565b820191905f5260205f20905b8154815290600101906020018083116113d257829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b61145f8761145989898989898961212d565b836121a9565b61146d8787878787876121f4565b50505050505050565b5f61147f6119f2565b61ffff16905090565b6003805461149590614901565b80601f01602080910402602001604051908101604052809291908181526020018280546114c190614901565b801561150c5780601f106114e35761010080835404028352916020019161150c565b820191905f5260205f20905b8154815290600101906020018083116114ef57829003601f168201915b505050505081565b5f610ff2826115216119f2565b611ce1565b610e608561145987878787612277565b61154888610e138a8a8a8a8a8a61212d565b6115568888888888886121f4565b5050505050505050565b61156981612314565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7c0c782cfb9e4eead85a014c03770fc21db63aea6d76999f12599b5f87b45e5d905f90a250565b600a545f9061ffff166115bd6119f2565b61ffff1610156115ea5750600a5462010000900473ffffffffffffffffffffffffffffffffffffffff1690565b50600b5473ffffffffffffffffffffffffffffffffffffffff1690565b5f610a06338484611adf565b5f61103c848484612326565b61163188610e138a8a8a8a8a8a61238a565b611556888888888888612406565b61164d836114598585611d1d565b6116578383611da5565b505050565b5f611668878787612326565b90505f6116778286868661251f565b905061168286612543565b61168c8188612586565b611556818961202c565b61169e611b37565b610f97816125f7565b6116af611b37565b5f6116b86119f2565b90505f6116c4826119fb565b6116cf5760016116d2565b60025b6116df9060ff1683614979565b600b5490915061ffff740100000000000000000000000000000000000000009091048116908316106117a457600d54600c80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055600b805461ffff831674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9091161790555b600c545f9061183c9061271090611800907f000000000000000000000000000000000000000000000000000000000000000061ffff16907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a25565b61180a9190614a6a565b600c5461183791907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a3c565b61276b565b600d80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83169081179091556040519192509061ffff8416907f96314a09a36c5d72a0a2217d361631d67fa044438d6568c1c4436d10aeec76f7905f90a3505050565b6118d28761145989898989898961238a565b61146d878787878787612406565b61146d87610e4e89898989612277565b61190289610e4e8b8b8b8b8b8b61238a565b611910898989898989612406565b505050505050505050565b61192482612543565b61193385611459868686612326565b61193d8584612586565b610e60858561202c565b61195989610e4e8b8b8b8b8b8b61212d565b6119108989898989896121f4565b5f610bbe8361197584611c42565b612794565b5f610bbe8284614a7d565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610d6961286b565b5f611a07600283614ab4565b61ffff166001149050919050565b600b545f9074010000000000000000000000000000000000000000900461ffff16611a3e6119f2565b61ffff161015611a6f5750600c547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b50600d547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168261ffff161115611ad557611ad082612893565b610a0a565b620f424092915050565b611ae761289f565b611af083612314565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b2c57611b2c82612314565b6116578383836128e1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611ba6576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611bda9190614ac8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f61ffff821115611c7f576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611c8c6119f2565b90508061ffff168261ffff1610611cdd576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff808416600483015282166024820152604401610b6f565b5050565b5f610bbe83836129aa6129d8565b5f610bbe8383612a7c6129d8565b60606040518060a0016040528060658152602001614cc560659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610bbe906080015b60405160208183030381529060405280519060200120612ada565b610e24611da085858585612b3b565b612b76565b611daf8282612d3a565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611e6d576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b8015611f0b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611ecf83835f91825260209091200190565b805490915061ffff168510611f05575462010000900473ffffffffffffffffffffffffffffffffffffffff169250610a0a915050565b50611e94565b50929392505050565b610e60611da08686868686612dc3565b5f426213c680611f3261286b565b61ffff16611f409190614b9d565b611f4e9063661bd350614bc6565b610d699190614a07565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611c7f576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f03611feb576040517f23d359a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611ff957505f610a0a565b8161200661271085614a25565b6120109190614a3c565b905081600182038161202457612024614994565b049392505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120685761206881612314565b611cdd8282612e0b565b61207a61289f565b61208382612314565b611cdd8282612e26565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790525f90612124908690612eec565b95945050505050565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b5f6121b5848484612fa0565b90505f8160058111156121ca576121ca614be4565b036121d55750505050565b6121e0848484612fe4565b156121eb5750505050565b610e2481612b76565b3373ffffffffffffffffffffffffffffffffffffffff861614612261576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff86166024820152604401610b6f565b61226f868686868686612406565b505050505050565b5f61228182612543565b61228c858585611985565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c081018390526121249060e001611d76565b61231d8161312c565b610f9781613374565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f9061103c9060a001611d76565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b824211612448576040517f498ff9a200000000000000000000000000000000000000000000000000000000815242600482015260248101849052604401610b6f565b81421061248a576040517fb3fcd33e00000000000000000000000000000000000000000000000000000000815242600482015260248101839052604401610b6f565b6124948682612d3a565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a361226f868686611adf565b5f8061252d86868686613426565b9250905061253a81612b76565b50949350505050565b80421115610f97576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101829052426024820152604401610b6f565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114611657576040517fd021c5570000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610b6f565b6125ff613533565b5f6126086119f2565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526009602052604090209091506126399082613574565b61266f576040517f22ce1a0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61267882612314565b5f6126d86126868484611ce1565b5f6127107dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000061ffff16020492915050565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811615612758576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815230905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6127618161361d565b611657838261362b565b5f610a0a827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613638565b5f8161ffff165f036127d2576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260096020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61283483835f91825260209091200190565b5461ffff9081169150851681111561284c57506127f9565b8461ffff168161ffff16149350505050610a0a565b505f949350505050565b5f6213c68061287e63661bd35042614c11565b6128889190614a6a565b610d69906001614a3c565b5f610a0a60058361364d565b6128aa610a1c6119f2565b15611ba6576040517f66f21c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128ea8261371a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161294991815260200190565b60405180910390a35f61295b82611f58565b90505f6129666119f2565b9050612972858361377f565b612989612983868361ffff16611e33565b8361378c565b6129938483613799565b610e606129a4858361ffff16611e33565b8361362b565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120610bbe908361364d565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168361ffff1611612a1957612a1284846137a6565b9050610bbe565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600660205260408120549003612a6e57612a12847f00000000000000000000000000000000000000000000000000000000000000006137a6565b61103c84848463ffffffff16565b5f610bbe612a8a84846138b7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ab48585613a58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160161276b565b5f612ae3610d39565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612b49868686613a86565b90925090505f826005811115612b6157612b61614be4565b14612b6c5781610f82565b610f828782613ace565b5f816005811115612b8957612b89614be4565b03612b915750565b6001816005811115612ba557612ba5614be4565b03612bdc576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612bf057612bf0614be4565b03612c27576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612c3b57612c3b614be4565b03612c72576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612c8657612c86614be4565b03612cbd576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612cd157612cd1614be4565b03612d08576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615611cdd576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610b6f565b5f805f612dd287878787613426565b90925090505f826005811115612dea57612dea614be4565b14612df55781612dff565b612dff8882613ace565b98975050505050505050565b612e1361289f565b612e1c82612314565b611cdd8282613b11565b612e2f8261371a565b805f03612e6b576040517f77b8dde300000000000000000000000000000000000000000000000000000000815260048101829052602401610b6f565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f612ec282611f58565b9050612ecd8161361d565b612ed78382613799565b611657612ee684610e376119f2565b8261362b565b5f73ffffffffffffffffffffffffffffffffffffffff83163b612f1057505f610a0a565b60608373ffffffffffffffffffffffffffffffffffffffff1683604051612f379190614c24565b5f604051808303815f865af19150503d805f8114612f70576040519150601f19603f3d011682016040523d82523d5f602084013e612f75565b606091505b50909250905081801561103c57508051158061103c57508080602001905181019061103c9190614c3f565b5f805f612fad8585613b7c565b90925090505f826005811115612fc557612fc5614be4565b14612fd05781612fda565b612fda8682613ace565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401613011929190614c5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516130929190614c24565b5f60405180830381855afa9150503d805f81146130ca576040519150601f19603f3d011682016040523d82523d5f602084013e6130cf565b606091505b50915091508180156130e357506020815110155b8015612fda575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906131219083016020908101908401614c76565b149695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260066020526040902054156131595750565b5f613184827f00000000000000000000000000000000000000000000000000000000000000006137a6565b73ffffffffffffffffffffffffffffffffffffffff83165f818152600660209081526040808320815180830183527f000000000000000000000000000000000000000000000000000000000000000061ffff9081168083527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff898116848801818152865460018082018955978b52898b2096519151918616620100009285168302179601959095559888526008875285882086518088019097529186528587018981528254958601835591885295872094519051911694160292909217910155919250900361326f575050565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff808416917f0000000000000000000000000000000000000000000000000000000000000000909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3604080515f81527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff8416917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050565b5f613386826133816119f2565b6138b7565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81161561341c576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff83169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611cdd8282613799565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561345b5750600390505f61352a565b8460ff16601b1415801561347357508460ff16601c14155b156134835750600490505f61352a565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156134d3573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615613521575f81613525565b60015f5b915091505b94509492505050565b61353e610a1c6119f2565b611ba6576040517f90bfab2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f908015806135b857505f8481526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015461ffff908116908416115b915081156136165760408051602080820190925261ffff858116825286546001810188555f8881529390932091519190920180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016919092161790555b5092915050565b611657600561197a83613bc0565b611cdd82613d7f83613d83565b5f8183106136465781610bbe565b5090919050565b5f8161ffff165f0361368b576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015613711577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6136c985835f91825260209091200190565b805490915061ffff80861691161161370b57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150610a0a9050565b5061368e565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610f97576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610b6f565b611cdd82613e3383613e3e565b611cdd82613e3383613d83565b611cdd82613d7f83613e3e565b6040517f406f84de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015261ffff831660248301525f917f00000000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691620f4240917f00000000000000000000000000000000000000000000000000000000000000009091169063406f84de90604401602060405180830381865afa158015613885573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138a99190614c76565b028161202457612024614994565b5f806138c38484613e6d565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f036138f5575f915050610a0a565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81165f6139258661ffff8716611e33565b90505f6139328787613e78565b90505b8561ffff168161ffff161015613a2d5761394e816119fb565b1580613961575061395f8282612794565b155b613a255761271061ffff7f0000000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851602047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16830192507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80168310613a25575050507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff039050610a0a565b600101613935565b50612fda7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841683614c11565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600660205260408120610bbe908361364d565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416613abf87838884613426565b9350935050505b935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613b09576005610bbe565b505f92915050565b5f613b1c8284613ed9565b90505f613b298483613f02565b90505f613b3885610fed6119f2565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03613b68575050505050565b613b72828261378c565b610e60838261362b565b5f808251604114613b925750600290505f613bb9565b6020830151604084015160608501515f1a9190613bb187848484613426565b945094505050505b9250929050565b5f805f613bcb6119f2565b86549091505f819003613c5b578660405180604001604052808461ffff168152602001613bfc5f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250613ac6915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f613c9088835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050613cca858763ffffffff8a16565b815490945061ffff9081169084161115613d44576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155613d74565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b0190565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526008602052604081208190613db4908585613bc0565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f610bbe8284614c8d565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610e60908383613bc0565b5f610bbe8383613a58565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081205415613eb157613eac8383614168565b610bbe565b507f000000000000000000000000000000000000000000000000000000000000000092915050565b5f73ffffffffffffffffffffffffffffffffffffffff831615613efc5782610bbe565b50919050565b5f80613f0c6119f2565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260076020526040812080549293509190819003613ff85760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4859350505050610a0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61402d83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff908116908516111561411a576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff00000000000000000000000000000000000000000000909116939092169290921717905561415e565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f8161ffff165f036141a6576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260066020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61420883835f91825260209091200190565b5461ffff908116915085168111614223579250610a0a915050565b506141cd565b5f5b8381101561424357818101518382015260200161422b565b50505f910152565b5f8151808452614262816020860160208601614229565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610bbe602083018461424b565b803573ffffffffffffffffffffffffffffffffffffffff811681146142c9575f80fd5b919050565b5f80604083850312156142df575f80fd5b6142e8836142a6565b946020939093013593505050565b5f805f60608486031215614308575f80fd5b614311846142a6565b925061431f602085016142a6565b9150604084013590509250925092565b5f6020828403121561433f575f80fd5b610bbe826142a6565b5f805f806080858703121561435b575f80fd5b614364856142a6565b966020860135965060408601359560600135945092505050565b803560ff811681146142c9575f80fd5b5f805f805f60a086880312156143a2575f80fd5b6143ab866142a6565b9450602086013593506143c06040870161437e565b94979396509394606081013594506080013592915050565b5f602082840312156143e8575f80fd5b5035919050565b5f805f8060808587031215614402575f80fd5b8435935060208501359250614419604086016142a6565b9150606085013561ffff8116811461442f575f80fd5b939692955090935050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261447660e084018a61424b565b8381036040850152614488818a61424b565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156144e8578351835292840192918401916001016144cc565b50909c9b505050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112614536575f80fd5b813567ffffffffffffffff80821115614551576145516144fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715614597576145976144fa565b816040528381528660208588010111156145af575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a0312156145e4575f80fd5b6145ed886142a6565b96506145fb602089016142a6565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115614632575f80fd5b61463e8a828b01614527565b91505092959891949750929550565b5f805f805f60a08688031215614661575f80fd5b61466a866142a6565b9450614678602087016142a6565b93506040860135925060608601359150608086013567ffffffffffffffff8111156146a1575f80fd5b6146ad88828901614527565b9150509295509295909350565b5f805f805f805f80610100898b0312156146d2575f80fd5b6146db896142a6565b97506146e960208a016142a6565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561472e575f80fd5b614737846142a6565b95602085013595506040909401359392505050565b5f805f6060848603121561475e575f80fd5b614767846142a6565b925060208401359150604084013567ffffffffffffffff811115614789575f80fd5b61479586828701614527565b9150509250925092565b5f805f805f8060c087890312156147b4575f80fd5b6147bd876142a6565b955060208701359450604087013593506147d96060880161437e565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a031215614809575f80fd5b614812886142a6565b9650614820602089016142a6565b9550604088013594506060880135935061483c6080890161437e565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215614869575f80fd5b614872836142a6565b9150614880602084016142a6565b90509250929050565b5f805f805f805f805f6101208a8c0312156148a2575f80fd5b6148ab8a6142a6565b98506148b960208b016142a6565b975060408a0135965060608a0135955060808a0135945060a08a013593506148e360c08b0161437e565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061491557607f821691505b602082108103613efc577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f64ffffffffff808416806149d8576149d8614994565b92169190910492915050565b5f64ffffffffff808416806149fb576149fb614994565b92169190910692915050565b64ffffffffff8281168282160390808211156136165761361661494c565b8082028115828204841417610a0a57610a0a61494c565b80820180821115610a0a57610a0a61494c565b61ffff8281168282160390808211156136165761361661494c565b5f82614a7857614a78614994565b500490565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156136165761361661494c565b5f61ffff808416806149fb576149fb614994565b5f8083545f60018260011c91506001831680614ae557607f831692505b60208084108203614b1d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b315760018114614b6457614b8f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b8f565b5f8a8152602090205f5b86811015614b875781548b820152908501908301614b6e565b505084890196505b509498975050505050505050565b64ffffffffff818116838216028082169190828114614bbe57614bbe61494c565b505092915050565b64ffffffffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b81810381811115610a0a57610a0a61494c565b5f8251614c35818460208701614229565b9190910192915050565b5f60208284031215614c4f575f80fd5b81518015158114610bbe575f80fd5b828152604060208201525f61103c604083018461424b565b5f60208284031215614c86575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156136165761361661494c56fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220e9a5c323e4846d510175bc0850b5b24bacb87eb2cacb699699eb4a357169f82b64736f6c63430008170033" } diff --git a/modules/m-core/bytecode/PowerTokenDeployer.json b/modules/m-core/bytecode/PowerTokenDeployer.json index 8d7757ac..a21ba5ef 100644 --- a/modules/m-core/bytecode/PowerTokenDeployer.json +++ b/modules/m-core/bytecode/PowerTokenDeployer.json @@ -1 +1 @@ -{ "bytecode": "0x60c060405234801561000f575f80fd5b5060405161606a38038061606a83398101604081905261002e916100a8565b6001600160a01b03821660a081905261005a5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038116608081905261008657604051630306120160e01b815260040160405180910390fd5b50506100d9565b80516001600160a01b03811681146100a3575f80fd5b919050565b5f80604083850312156100b9575f80fd5b6100c28361008d565b91506100d06020840161008d565b90509250929050565b60805160a051615f636101075f395f818160d6015261018001525f818161012e01526101eb0152615f635ff3fe608060405234801562000010575f80fd5b506004361062000078575f3560e01c8063affed0e01162000053578063affed0e014620000f8578063d9181cd31462000111578063fbfa77cf1462000128575f80fd5b8063585e78af146200007c578063777f14d914620000c65780638df3227f14620000d0575b5f80fd5b5f546200009c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6200009c62000150565b6200009c7f000000000000000000000000000000000000000000000000000000000000000081565b6200010260015481565b604051908152602001620000bd565b6200009c6200012236600462000801565b62000167565b6200009c7f000000000000000000000000000000000000000000000000000000000000000081565b5f6200016230600154600101620002ad565b905090565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620001d8576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054810190556040518490849084907f0000000000000000000000000000000000000000000000000000000000000000906200021690620007ca565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103905ff08015801562000265573d5f803e3d5ffd5b505f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055949350505050565b5f81156200070757607f821115620006575760ff821115620005815761ffff821115620004ab5762ffffff821115620003c6576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b604051602081830303815290604052620007bb565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a01604051602081830303815290604052620007bb565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b166037820152603901620003b1565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166037820152603801620003b1565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166036820152603701620003b1565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b80516020909101209392505050565b6156e5806200084983390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620007fc575f80fd5b919050565b5f805f6060848603121562000814575f80fd5b6200081f84620007d8565b92506200082f60208501620007d8565b91506200083f60408501620007d8565b9050925092509256fe6101a0604052600d80546001600160f01b031916620f424017905534801562000026575f80fd5b50604051620056e5380380620056e583398101604081905262000049916200059b565b6040518060400160405280600c81526020016b0506f776572206279204d5e360a41b815250604051806040016040528060058152602001642827aba2a960d91b8152505f600a6127106200009e91906200061d565b8383838282828280805f620000b48282620006dd565b5046608052620000c362000328565b60a0525060039150620000d990508382620006dd565b5060ff1660c05250505061271061ffff8416111591506200010f9050576040516368c6e15960e01b815260040160405180910390fd5b61ffff1660e0525050506001600160a01b0384166101008190526200014757604051635345eea560e01b815260040160405180910390fd5b6001600160a01b0383166101208190526200017557604051637301473d60e11b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b038416908117909155620001b157604051634e71231360e11b815260040160405180910390fd5b6001600160a01b038116610140819052620001df57604051630306120160e01b815260040160405180910390fd5b5f6001620001ec620003c4565b620001f89190620007a9565b61ffff16610160819052604051635c7e5d5f60e01b8152600481018290529091505f906001600160a01b03871690635c7e5d5f90602401602060405180830381865afa1580156200024b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002719190620007ce565b9050805f036200029457604051637d5b431760e11b815260040160405180910390fd5b6001600160f01b03811115620002bd576040516303ca7dbd60e61b815260040160405180910390fd5b6001600160f01b03811661018052620002d9620f4240620003d4565b604051620f424081526001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050620008c5565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516200035c9190620007e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f620003cf620003f2565b905090565b620003ed60056200197a6200042060201b178362000436565b505050565b5f6213c68062000407636322c9624262000860565b62000413919062000876565b620003cf9060016200088c565b5f6200042d8284620008a2565b90505b92915050565b5f808062000443620003c4565b86549091505f819003620004bc578660405180604001604052808461ffff168152602001620004735f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000577915050565b5f19015f620004d388835f91825260209091200190565b80546201000090046001600160f01b031695509050620004f5858760208a901c565b815490945061ffff90811690841611156200055a576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e81529190912094519151909216620100000292169190911791015562000573565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b80516001600160a01b038116811462000596575f80fd5b919050565b5f805f8060808587031215620005af575f80fd5b620005ba856200057f565b9350620005ca602086016200057f565b9250620005da604086016200057f565b9150620005ea606086016200057f565b905092959194509250565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f61ffff80841680620006345762000634620005f5565b92169190910492915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200066957607f821691505b6020821081036200068857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003ed57805f5260205f20601f840160051c81016020851015620006b55750805b601f840160051c820191505b81811015620006d6575f8155600101620006c1565b5050505050565b81516001600160401b03811115620006f957620006f962000640565b62000711816200070a845462000654565b846200068e565b602080601f83116001811462000747575f84156200072f5750858301515b5f19600386901b1c1916600185901b178555620007a1565b5f85815260208120601f198616915b82811015620007775788860151825594840194600190910190840162000756565b50858210156200079557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61ffff828116828216039080821115620007c757620007c762000609565b5092915050565b5f60208284031215620007df575f80fd5b5051919050565b5f808354620007f58162000654565b60018281168015620008105760018114620008265762000854565b60ff198416875282151583028701945062000854565b875f526020805f205f5b858110156200084b5781548a82015290840190820162000830565b50505082870194505b50929695505050505050565b8181038181111562000430576200043062000609565b5f82620008875762000887620005f5565b500490565b8082018082111562000430576200043062000609565b6001600160f01b03818116838216019080821115620007c757620007c762000609565b60805160a05160c05160e0516101005161012051610140516101605161018051614d5f620009865f395f6137f701525f81816103fe01528181611a99015281816129db01528181612a4a01528181613160015281816131b40152613eb401525f818161094901526112a801525f818161056a0152611b4f01525f81816104f0015281816132b0015261383e01525f8181610788015281816117b7015281816126ad015261396d01525f6104af01525f610d7101525f610d3c0152614d5f5ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c806388b7ab63116101d4578063c2ee3a0811610109578063dd62ed3e116100a9578063edc41f6411610079578063edc41f641461090b578063ef55bec61461091e578063f8520c0814610931578063fbfa77cf14610944575f80fd5b8063dd62ed3e1461087a578063e3ee160e146108a4578063e7a324dc146108b7578063e94a0102146108de575f80fd5b8063c8f4a893116100e4578063c8f4a89314610825578063cf0929951461082d578063d505accf14610840578063d916948714610853575f80fd5b8063c2ee3a08146107f6578063c3cda520146107ff578063c580b26914610812575f80fd5b8063a584119411610174578063a9059cbb1161014f578063a9059cbb146107aa578063ac9ebbd0146107bd578063ace150a5146107d0578063b7b72899146107e3575f80fd5b8063a584119414610768578063a72246871461077b578063a797d91614610783575f80fd5b80639ab24eb0116101af5780639ab24eb0146107085780639fd5a6cf1461071b578063a08cb48b1461072e578063a0cc6a6814610741575f80fd5b806388b7ab63146106ce57806391ddadf4146106e157806395d89b4114610700575f80fd5b8063406f84de116102b55780635c19a95c116102555780637b3a3d19116102255780637b3a3d19146106245780637ecebe001461066d5780637f2eecc31461068c57806384b0196e146106b3575f80fd5b80635c19a95c146105d85780635c7e5d5f146105eb57806370a08231146105fe57806377eea14614610611575f80fd5b8063532992c511610290578063532992c51461058c578063587cde1e1461059f5780635a049a70146105b25780635a4dd47d146105c5575f80fd5b8063406f84de1461054a5780634bf5d7e91461055d5780634d6d744114610565575f80fd5b80632a1eafd911610320578063313ce567116102fb578063313ce567146104aa5780633644e515146104e3578063397da79d146104eb5780633a46b1a814610537575f80fd5b80632a1eafd9146104715780632ff2e9dc1461047957806330adf81f14610483575f80fd5b80630db3a5581161035b5780630db3a558146103f957806318160ddd1461043357806323b872dd14610449578063286b1d0b1461045c575f80fd5b806306fdde0314610381578063095ea7b31461039f57806309dc8d92146103c2575b5f80fd5b61038961096b565b6040516103969190614294565b60405180910390f35b6103b26103ad3660046142ce565b6109fa565b6040519015158152602001610396565b6103ca610a10565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610396565b61043b610aa1565b604051908152602001610396565b6103b26104573660046142f6565b610ad2565b61046f61046a36600461432f565b610bc5565b005b61043b610d30565b6103ca620f424081565b61043b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104d17f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610396565b61043b610d39565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b61043b6105453660046142ce565b610d93565b61043b6105583660046142ce565b610ddb565b610389610dfb565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b61046f61059a366004614348565b610e05565b6105126105ad36600461432f565b610e2a565b61046f6105c036600461438e565b610e40565b61043b6105d33660046143d8565b610e67565b61046f6105e636600461432f565b610f8d565b61043b6105f93660046143d8565b610f9a565b61043b61060c36600461432f565b610fe0565b61051261061f3660046142ce565b611018565b6106376106323660046143ef565b611044565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610396565b61043b61067b36600461432f565b60016020525f908152604090205481565b61043b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b6106bb61130f565b604051610396979695949392919061443a565b61046f6106dc3660046145ce565b611447565b6106e9611476565b60405165ffffffffffff9091168152602001610396565b610389611488565b61043b61071636600461432f565b611514565b61046f61072936600461464d565b611526565b61046f61073c3660046146ba565b611536565b61043b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61046f61077636600461432f565b611560565b6105126115ac565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b6103b26107b83660046142ce565b611607565b61043b6107cb36600461471c565b611613565b61046f6107de3660046146ba565b61161f565b61046f6107f136600461474c565b61163f565b61042061271081565b61046f61080d36600461479f565b61165c565b61046f61082036600461432f565b611696565b61046f6116a7565b61046f61083b3660046145ce565b6118c0565b61046f61084e3660046147f3565b6118e0565b61043b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b61043b610888366004614858565b600460209081525f928352604080842090915290825290205481565b61046f6108b2366004614889565b6118f0565b61043b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6103b26108ec3660046142ce565b600260209081525f928352604080842090915290825290205460ff1681565b61046f61091936600461464d565b61191b565b61046f61092c366004614889565b611947565b6103b261093f3660046142ce565b611967565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60605f805461097990614901565b80601f01602080910402602001604051908101604052809291908181526020018280546109a590614901565b80156109f05780601f106109c7576101008083540402835291602001916109f0565b820191905f5260205f20905b8154815290600101906020018083116109d357829003601f168201915b5050505050905090565b5f610a06338484611985565b5060015b92915050565b5f610a21610a1c6119f2565b6119fb565b15610a2b57505f90565b5f610a34611a15565b90505f610a47610a426119f2565b611a96565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1611610a96575f610a9a565b8082035b9250505090565b5f610aad610a426119f2565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bad5782811015610b78576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b610bb8858585611adf565b60019150505b9392505050565b610bcd611b37565b73ffffffffffffffffffffffffffffffffffffffff8116610c1a576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c236119f2565b90505f610c31826001614979565b600a5490915061ffff90811690831610610cba57600b54600a80547fffffffffffffffffffff000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff83161790555b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915560405161ffff8316907f9f25fdcf794a19f398e3f72072c7ced095c8dedada1ce1fcd07194d1241bb2e0905f90a3505050565b5f610aad611a15565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610d6e57610d69611ba8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610d9e83611c42565b9050610da981611c83565b610db38482611ce1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b5f80610de683611c42565b9050610df181611c83565b610db38482611cef565b6060610d69611cfd565b610e1a84610e138686611d1d565b8484611d91565b610e248484611da5565b50505050565b5f610a0a82610e376119f2565b61ffff16611e33565b610e5685610e4e8787611d1d565b858585611f14565b610e608585611da5565b5050505050565b5f80610e716119f2565b90505f610e7d826119fb565b610e8e57610e89611f24565b610e93565b6213c6805b90505f610ea460646213c6806149c1565b90505f610eb182846149c1565b64ffffffffff166001901b90505f8284610ecb91906149e4565b9050610f82600183901c610edf8386614a07565b64ffffffffff16610ef09190614a25565b610f018464ffffffffff8516614a25565b610f0b9190614a3c565b610f1489611f58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f3e9190614a25565b610f4c610a42600189614a4f565b610f7d907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1664ffffffffff8716614a25565b611fb1565b979650505050505050565b610f97338261202c565b50565b5f80610fa583611c42565b9050610fb081611c83565b610fb981611a96565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610ff282610fed6119f2565b611cef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f8061102383611c42565b905061102e81611c83565b61103c848261ffff16611e33565b949350505050565b5f808261ffff166110536119f2565b61ffff16111561108f576040517fc32cae0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158061109a575084155b156110d1576040517f31e5050700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110da610a10565b90505f6110e688611f58565b90505f6110f288611f58565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16116111415782611143565b805b9450817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16857dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610156111e9576040517f557b2dbd0000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808516600483015283166024820152604401610b6f565b337fbb7c3dcaa7b43f7670119fdaf5a34790f80be05722782103263b2f6a83496238866112357dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216610e67565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083018290529097500160405180910390a261129a87867dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612072565b6112cd6112a56115ac565b337f00000000000000000000000000000000000000000000000000000000000000008761208d565b611303576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505094509492505050565b5f606080828080838146308280604051908082528060200260200182016040528015611345578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461137890614901565b80601f01602080910402602001604051908101604052809291908181526020018280546113a490614901565b80156113ef5780601f106113c6576101008083540402835291602001916113ef565b820191905f5260205f20905b8154815290600101906020018083116113d257829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b61145f8761145989898989898961212d565b836121a9565b61146d8787878787876121f4565b50505050505050565b5f61147f6119f2565b61ffff16905090565b6003805461149590614901565b80601f01602080910402602001604051908101604052809291908181526020018280546114c190614901565b801561150c5780601f106114e35761010080835404028352916020019161150c565b820191905f5260205f20905b8154815290600101906020018083116114ef57829003601f168201915b505050505081565b5f610ff2826115216119f2565b611ce1565b610e608561145987878787612277565b61154888610e138a8a8a8a8a8a61212d565b6115568888888888886121f4565b5050505050505050565b61156981612314565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7c0c782cfb9e4eead85a014c03770fc21db63aea6d76999f12599b5f87b45e5d905f90a250565b600a545f9061ffff166115bd6119f2565b61ffff1610156115ea5750600a5462010000900473ffffffffffffffffffffffffffffffffffffffff1690565b50600b5473ffffffffffffffffffffffffffffffffffffffff1690565b5f610a06338484611adf565b5f61103c848484612326565b61163188610e138a8a8a8a8a8a61238a565b611556888888888888612406565b61164d836114598585611d1d565b6116578383611da5565b505050565b5f611668878787612326565b90505f6116778286868661251f565b905061168286612543565b61168c8188612586565b611556818961202c565b61169e611b37565b610f97816125f7565b6116af611b37565b5f6116b86119f2565b90505f6116c4826119fb565b6116cf5760016116d2565b60025b6116df9060ff1683614979565b600b5490915061ffff740100000000000000000000000000000000000000009091048116908316106117a457600d54600c80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055600b805461ffff831674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9091161790555b600c545f9061183c9061271090611800907f000000000000000000000000000000000000000000000000000000000000000061ffff16907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a25565b61180a9190614a6a565b600c5461183791907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a3c565b61276b565b600d80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83169081179091556040519192509061ffff8416907f96314a09a36c5d72a0a2217d361631d67fa044438d6568c1c4436d10aeec76f7905f90a3505050565b6118d28761145989898989898961238a565b61146d878787878787612406565b61146d87610e4e89898989612277565b61190289610e4e8b8b8b8b8b8b61238a565b611910898989898989612406565b505050505050505050565b61192482612543565b61193385611459868686612326565b61193d8584612586565b610e60858561202c565b61195989610e4e8b8b8b8b8b8b61212d565b6119108989898989896121f4565b5f610bbe8361197584611c42565b612794565b5f610bbe8284614a7d565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610d6961286b565b5f611a07600283614ab4565b61ffff166001149050919050565b600b545f9074010000000000000000000000000000000000000000900461ffff16611a3e6119f2565b61ffff161015611a6f5750600c547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b50600d547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168261ffff161115611ad557611ad082612893565b610a0a565b620f424092915050565b611ae761289f565b611af083612314565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b2c57611b2c82612314565b6116578383836128e1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611ba6576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611bda9190614ac8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f61ffff821115611c7f576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611c8c6119f2565b90508061ffff168261ffff1610611cdd576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff808416600483015282166024820152604401610b6f565b5050565b5f610bbe83836129aa6129d8565b5f610bbe8383612a7c6129d8565b60606040518060a0016040528060658152602001614cc560659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610bbe906080015b60405160208183030381529060405280519060200120612ada565b610e24611da085858585612b3b565b612b76565b611daf8282612d3a565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611e6d576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b8015611f0b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611ecf83835f91825260209091200190565b805490915061ffff168510611f05575462010000900473ffffffffffffffffffffffffffffffffffffffff169250610a0a915050565b50611e94565b50929392505050565b610e60611da08686868686612dc3565b5f426213c680611f3261286b565b61ffff16611f409190614b9d565b611f4e90636322c962614bc6565b610d699190614a07565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611c7f576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f03611feb576040517f23d359a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611ff957505f610a0a565b8161200661271085614a25565b6120109190614a3c565b905081600182038161202457612024614994565b049392505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120685761206881612314565b611cdd8282612e0b565b61207a61289f565b61208382612314565b611cdd8282612e26565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790525f90612124908690612eec565b95945050505050565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b5f6121b5848484612fa0565b90505f8160058111156121ca576121ca614be4565b036121d55750505050565b6121e0848484612fe4565b156121eb5750505050565b610e2481612b76565b3373ffffffffffffffffffffffffffffffffffffffff861614612261576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff86166024820152604401610b6f565b61226f868686868686612406565b505050505050565b5f61228182612543565b61228c858585611985565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c081018390526121249060e001611d76565b61231d8161312c565b610f9781613374565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f9061103c9060a001611d76565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b824211612448576040517f498ff9a200000000000000000000000000000000000000000000000000000000815242600482015260248101849052604401610b6f565b81421061248a576040517fb3fcd33e00000000000000000000000000000000000000000000000000000000815242600482015260248101839052604401610b6f565b6124948682612d3a565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a361226f868686611adf565b5f8061252d86868686613426565b9250905061253a81612b76565b50949350505050565b80421115610f97576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101829052426024820152604401610b6f565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114611657576040517fd021c5570000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610b6f565b6125ff613533565b5f6126086119f2565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526009602052604090209091506126399082613574565b61266f576040517f22ce1a0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61267882612314565b5f6126d86126868484611ce1565b5f6127107dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000061ffff16020492915050565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811615612758576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815230905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6127618161361d565b611657838261362b565b5f610a0a827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613638565b5f8161ffff165f036127d2576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260096020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61283483835f91825260209091200190565b5461ffff9081169150851681111561284c57506127f9565b8461ffff168161ffff16149350505050610a0a565b505f949350505050565b5f6213c68061287e636322c96242614c11565b6128889190614a6a565b610d69906001614a3c565b5f610a0a60058361364d565b6128aa610a1c6119f2565b15611ba6576040517f66f21c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128ea8261371a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161294991815260200190565b60405180910390a35f61295b82611f58565b90505f6129666119f2565b9050612972858361377f565b612989612983868361ffff16611e33565b8361378c565b6129938483613799565b610e606129a4858361ffff16611e33565b8361362b565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120610bbe908361364d565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168361ffff1611612a1957612a1284846137a6565b9050610bbe565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600660205260408120549003612a6e57612a12847f00000000000000000000000000000000000000000000000000000000000000006137a6565b61103c84848463ffffffff16565b5f610bbe612a8a84846138b7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ab48585613a58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160161276b565b5f612ae3610d39565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612b49868686613a86565b90925090505f826005811115612b6157612b61614be4565b14612b6c5781610f82565b610f828782613ace565b5f816005811115612b8957612b89614be4565b03612b915750565b6001816005811115612ba557612ba5614be4565b03612bdc576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612bf057612bf0614be4565b03612c27576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612c3b57612c3b614be4565b03612c72576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612c8657612c86614be4565b03612cbd576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612cd157612cd1614be4565b03612d08576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615611cdd576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610b6f565b5f805f612dd287878787613426565b90925090505f826005811115612dea57612dea614be4565b14612df55781612dff565b612dff8882613ace565b98975050505050505050565b612e1361289f565b612e1c82612314565b611cdd8282613b11565b612e2f8261371a565b805f03612e6b576040517f77b8dde300000000000000000000000000000000000000000000000000000000815260048101829052602401610b6f565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f612ec282611f58565b9050612ecd8161361d565b612ed78382613799565b611657612ee684610e376119f2565b8261362b565b5f73ffffffffffffffffffffffffffffffffffffffff83163b612f1057505f610a0a565b60608373ffffffffffffffffffffffffffffffffffffffff1683604051612f379190614c24565b5f604051808303815f865af19150503d805f8114612f70576040519150601f19603f3d011682016040523d82523d5f602084013e612f75565b606091505b50909250905081801561103c57508051158061103c57508080602001905181019061103c9190614c3f565b5f805f612fad8585613b7c565b90925090505f826005811115612fc557612fc5614be4565b14612fd05781612fda565b612fda8682613ace565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401613011929190614c5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516130929190614c24565b5f60405180830381855afa9150503d805f81146130ca576040519150601f19603f3d011682016040523d82523d5f602084013e6130cf565b606091505b50915091508180156130e357506020815110155b8015612fda575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906131219083016020908101908401614c76565b149695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260066020526040902054156131595750565b5f613184827f00000000000000000000000000000000000000000000000000000000000000006137a6565b73ffffffffffffffffffffffffffffffffffffffff83165f818152600660209081526040808320815180830183527f000000000000000000000000000000000000000000000000000000000000000061ffff9081168083527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff898116848801818152865460018082018955978b52898b2096519151918616620100009285168302179601959095559888526008875285882086518088019097529186528587018981528254958601835591885295872094519051911694160292909217910155919250900361326f575050565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff808416917f0000000000000000000000000000000000000000000000000000000000000000909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3604080515f81527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff8416917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050565b5f613386826133816119f2565b6138b7565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81161561341c576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff83169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611cdd8282613799565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561345b5750600390505f61352a565b8460ff16601b1415801561347357508460ff16601c14155b156134835750600490505f61352a565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156134d3573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615613521575f81613525565b60015f5b915091505b94509492505050565b61353e610a1c6119f2565b611ba6576040517f90bfab2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f908015806135b857505f8481526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015461ffff908116908416115b915081156136165760408051602080820190925261ffff858116825286546001810188555f8881529390932091519190920180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016919092161790555b5092915050565b611657600561197a83613bc0565b611cdd82613d7f83613d83565b5f8183106136465781610bbe565b5090919050565b5f8161ffff165f0361368b576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015613711577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6136c985835f91825260209091200190565b805490915061ffff80861691161161370b57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150610a0a9050565b5061368e565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610f97576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610b6f565b611cdd82613e3383613e3e565b611cdd82613e3383613d83565b611cdd82613d7f83613e3e565b6040517f406f84de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015261ffff831660248301525f917f00000000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691620f4240917f00000000000000000000000000000000000000000000000000000000000000009091169063406f84de90604401602060405180830381865afa158015613885573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138a99190614c76565b028161202457612024614994565b5f806138c38484613e6d565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f036138f5575f915050610a0a565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81165f6139258661ffff8716611e33565b90505f6139328787613e78565b90505b8561ffff168161ffff161015613a2d5761394e816119fb565b1580613961575061395f8282612794565b155b613a255761271061ffff7f0000000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851602047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16830192507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80168310613a25575050507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff039050610a0a565b600101613935565b50612fda7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841683614c11565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600660205260408120610bbe908361364d565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416613abf87838884613426565b9350935050505b935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613b09576005610bbe565b505f92915050565b5f613b1c8284613ed9565b90505f613b298483613f02565b90505f613b3885610fed6119f2565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03613b68575050505050565b613b72828261378c565b610e60838261362b565b5f808251604114613b925750600290505f613bb9565b6020830151604084015160608501515f1a9190613bb187848484613426565b945094505050505b9250929050565b5f805f613bcb6119f2565b86549091505f819003613c5b578660405180604001604052808461ffff168152602001613bfc5f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250613ac6915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f613c9088835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050613cca858763ffffffff8a16565b815490945061ffff9081169084161115613d44576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155613d74565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b0190565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526008602052604081208190613db4908585613bc0565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f610bbe8284614c8d565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610e60908383613bc0565b5f610bbe8383613a58565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081205415613eb157613eac8383614168565b610bbe565b507f000000000000000000000000000000000000000000000000000000000000000092915050565b5f73ffffffffffffffffffffffffffffffffffffffff831615613efc5782610bbe565b50919050565b5f80613f0c6119f2565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260076020526040812080549293509190819003613ff85760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4859350505050610a0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61402d83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff908116908516111561411a576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff00000000000000000000000000000000000000000000909116939092169290921717905561415e565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f8161ffff165f036141a6576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260066020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61420883835f91825260209091200190565b5461ffff908116915085168111614223579250610a0a915050565b506141cd565b5f5b8381101561424357818101518382015260200161422b565b50505f910152565b5f8151808452614262816020860160208601614229565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610bbe602083018461424b565b803573ffffffffffffffffffffffffffffffffffffffff811681146142c9575f80fd5b919050565b5f80604083850312156142df575f80fd5b6142e8836142a6565b946020939093013593505050565b5f805f60608486031215614308575f80fd5b614311846142a6565b925061431f602085016142a6565b9150604084013590509250925092565b5f6020828403121561433f575f80fd5b610bbe826142a6565b5f805f806080858703121561435b575f80fd5b614364856142a6565b966020860135965060408601359560600135945092505050565b803560ff811681146142c9575f80fd5b5f805f805f60a086880312156143a2575f80fd5b6143ab866142a6565b9450602086013593506143c06040870161437e565b94979396509394606081013594506080013592915050565b5f602082840312156143e8575f80fd5b5035919050565b5f805f8060808587031215614402575f80fd5b8435935060208501359250614419604086016142a6565b9150606085013561ffff8116811461442f575f80fd5b939692955090935050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261447660e084018a61424b565b8381036040850152614488818a61424b565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156144e8578351835292840192918401916001016144cc565b50909c9b505050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112614536575f80fd5b813567ffffffffffffffff80821115614551576145516144fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715614597576145976144fa565b816040528381528660208588010111156145af575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a0312156145e4575f80fd5b6145ed886142a6565b96506145fb602089016142a6565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115614632575f80fd5b61463e8a828b01614527565b91505092959891949750929550565b5f805f805f60a08688031215614661575f80fd5b61466a866142a6565b9450614678602087016142a6565b93506040860135925060608601359150608086013567ffffffffffffffff8111156146a1575f80fd5b6146ad88828901614527565b9150509295509295909350565b5f805f805f805f80610100898b0312156146d2575f80fd5b6146db896142a6565b97506146e960208a016142a6565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561472e575f80fd5b614737846142a6565b95602085013595506040909401359392505050565b5f805f6060848603121561475e575f80fd5b614767846142a6565b925060208401359150604084013567ffffffffffffffff811115614789575f80fd5b61479586828701614527565b9150509250925092565b5f805f805f8060c087890312156147b4575f80fd5b6147bd876142a6565b955060208701359450604087013593506147d96060880161437e565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a031215614809575f80fd5b614812886142a6565b9650614820602089016142a6565b9550604088013594506060880135935061483c6080890161437e565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215614869575f80fd5b614872836142a6565b9150614880602084016142a6565b90509250929050565b5f805f805f805f805f6101208a8c0312156148a2575f80fd5b6148ab8a6142a6565b98506148b960208b016142a6565b975060408a0135965060608a0135955060808a0135945060a08a013593506148e360c08b0161437e565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061491557607f821691505b602082108103613efc577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f64ffffffffff808416806149d8576149d8614994565b92169190910492915050565b5f64ffffffffff808416806149fb576149fb614994565b92169190910692915050565b64ffffffffff8281168282160390808211156136165761361661494c565b8082028115828204841417610a0a57610a0a61494c565b80820180821115610a0a57610a0a61494c565b61ffff8281168282160390808211156136165761361661494c565b5f82614a7857614a78614994565b500490565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156136165761361661494c565b5f61ffff808416806149fb576149fb614994565b5f8083545f60018260011c91506001831680614ae557607f831692505b60208084108203614b1d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b315760018114614b6457614b8f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b8f565b5f8a8152602090205f5b86811015614b875781548b820152908501908301614b6e565b505084890196505b509498975050505050505050565b64ffffffffff818116838216028082169190828114614bbe57614bbe61494c565b505092915050565b64ffffffffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b81810381811115610a0a57610a0a61494c565b5f8251614c35818460208701614229565b9190910192915050565b5f60208284031215614c4f575f80fd5b81518015158114610bbe575f80fd5b828152604060208201525f61103c604083018461424b565b5f60208284031215614c86575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156136165761361661494c56fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220e4d1f2d9e23b6efbe8ae961fae941c8e17ad101d54447c6d42cc5d1b9aa1d69664736f6c63430008170033a2646970667358221220026bf397b9eda48935729d01e11f31cf2d2bcb0e9a570f19c71bf68be761b55a64736f6c63430008170033" } +{ "bytecode": "0x60c060405234801561000f575f80fd5b5060405161606a38038061606a83398101604081905261002e916100a8565b6001600160a01b03821660a081905261005a5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038116608081905261008657604051630306120160e01b815260040160405180910390fd5b50506100d9565b80516001600160a01b03811681146100a3575f80fd5b919050565b5f80604083850312156100b9575f80fd5b6100c28361008d565b91506100d06020840161008d565b90509250929050565b60805160a051615f636101075f395f818160d6015261018001525f818161012e01526101eb0152615f635ff3fe608060405234801562000010575f80fd5b506004361062000078575f3560e01c8063affed0e01162000053578063affed0e014620000f8578063d9181cd31462000111578063fbfa77cf1462000128575f80fd5b8063585e78af146200007c578063777f14d914620000c65780638df3227f14620000d0575b5f80fd5b5f546200009c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6200009c62000150565b6200009c7f000000000000000000000000000000000000000000000000000000000000000081565b6200010260015481565b604051908152602001620000bd565b6200009c6200012236600462000801565b62000167565b6200009c7f000000000000000000000000000000000000000000000000000000000000000081565b5f6200016230600154600101620002ad565b905090565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620001d8576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054810190556040518490849084907f0000000000000000000000000000000000000000000000000000000000000000906200021690620007ca565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015290831660408301529091166060820152608001604051809103905ff08015801562000265573d5f803e3d5ffd5b505f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055949350505050565b5f81156200070757607f821115620006575760ff821115620005815761ffff821115620004ab5762ffffff821115620003c6576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b604051602081830303815290604052620007bb565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a01604051602081830303815290604052620007bb565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b166037820152603901620003b1565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166037820152603801620003b1565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166036820152603701620003b1565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b80516020909101209392505050565b6156e5806200084983390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620007fc575f80fd5b919050565b5f805f6060848603121562000814575f80fd5b6200081f84620007d8565b92506200082f60208501620007d8565b91506200083f60408501620007d8565b9050925092509256fe6101a0604052600d80546001600160f01b031916620f424017905534801562000026575f80fd5b50604051620056e5380380620056e583398101604081905262000049916200059b565b6040518060400160405280600c81526020016b0506f776572206279204d5e360a41b815250604051806040016040528060058152602001642827aba2a960d91b8152505f600a6127106200009e91906200061d565b8383838282828280805f620000b48282620006dd565b5046608052620000c362000328565b60a0525060039150620000d990508382620006dd565b5060ff1660c05250505061271061ffff8416111591506200010f9050576040516368c6e15960e01b815260040160405180910390fd5b61ffff1660e0525050506001600160a01b0384166101008190526200014757604051635345eea560e01b815260040160405180910390fd5b6001600160a01b0383166101208190526200017557604051637301473d60e11b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b038416908117909155620001b157604051634e71231360e11b815260040160405180910390fd5b6001600160a01b038116610140819052620001df57604051630306120160e01b815260040160405180910390fd5b5f6001620001ec620003c4565b620001f89190620007a9565b61ffff16610160819052604051635c7e5d5f60e01b8152600481018290529091505f906001600160a01b03871690635c7e5d5f90602401602060405180830381865afa1580156200024b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002719190620007ce565b9050805f036200029457604051637d5b431760e11b815260040160405180910390fd5b6001600160f01b03811115620002bd576040516303ca7dbd60e61b815260040160405180910390fd5b6001600160f01b03811661018052620002d9620f4240620003d4565b604051620f424081526001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050620008c5565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516200035c9190620007e6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f620003cf620003f2565b905090565b620003ed60056200197a6200042060201b178362000436565b505050565b5f6213c6806200040763661bd3504262000860565b62000413919062000876565b620003cf9060016200088c565b5f6200042d8284620008a2565b90505b92915050565b5f808062000443620003c4565b86549091505f819003620004bc578660405180604001604052808461ffff168152602001620004735f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000577915050565b5f19015f620004d388835f91825260209091200190565b80546201000090046001600160f01b031695509050620004f5858760208a901c565b815490945061ffff90811690841611156200055a576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e81529190912094519151909216620100000292169190911791015562000573565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b80516001600160a01b038116811462000596575f80fd5b919050565b5f805f8060808587031215620005af575f80fd5b620005ba856200057f565b9350620005ca602086016200057f565b9250620005da604086016200057f565b9150620005ea606086016200057f565b905092959194509250565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f61ffff80841680620006345762000634620005f5565b92169190910492915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200066957607f821691505b6020821081036200068857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003ed57805f5260205f20601f840160051c81016020851015620006b55750805b601f840160051c820191505b81811015620006d6575f8155600101620006c1565b5050505050565b81516001600160401b03811115620006f957620006f962000640565b62000711816200070a845462000654565b846200068e565b602080601f83116001811462000747575f84156200072f5750858301515b5f19600386901b1c1916600185901b178555620007a1565b5f85815260208120601f198616915b82811015620007775788860151825594840194600190910190840162000756565b50858210156200079557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61ffff828116828216039080821115620007c757620007c762000609565b5092915050565b5f60208284031215620007df575f80fd5b5051919050565b5f808354620007f58162000654565b60018281168015620008105760018114620008265762000854565b60ff198416875282151583028701945062000854565b875f526020805f205f5b858110156200084b5781548a82015290840190820162000830565b50505082870194505b50929695505050505050565b8181038181111562000430576200043062000609565b5f82620008875762000887620005f5565b500490565b8082018082111562000430576200043062000609565b6001600160f01b03818116838216019080821115620007c757620007c762000609565b60805160a05160c05160e0516101005161012051610140516101605161018051614d5f620009865f395f6137f701525f81816103fe01528181611a99015281816129db01528181612a4a01528181613160015281816131b40152613eb401525f818161094901526112a801525f818161056a0152611b4f01525f81816104f0015281816132b0015261383e01525f8181610788015281816117b7015281816126ad015261396d01525f6104af01525f610d7101525f610d3c0152614d5f5ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c806388b7ab63116101d4578063c2ee3a0811610109578063dd62ed3e116100a9578063edc41f6411610079578063edc41f641461090b578063ef55bec61461091e578063f8520c0814610931578063fbfa77cf14610944575f80fd5b8063dd62ed3e1461087a578063e3ee160e146108a4578063e7a324dc146108b7578063e94a0102146108de575f80fd5b8063c8f4a893116100e4578063c8f4a89314610825578063cf0929951461082d578063d505accf14610840578063d916948714610853575f80fd5b8063c2ee3a08146107f6578063c3cda520146107ff578063c580b26914610812575f80fd5b8063a584119411610174578063a9059cbb1161014f578063a9059cbb146107aa578063ac9ebbd0146107bd578063ace150a5146107d0578063b7b72899146107e3575f80fd5b8063a584119414610768578063a72246871461077b578063a797d91614610783575f80fd5b80639ab24eb0116101af5780639ab24eb0146107085780639fd5a6cf1461071b578063a08cb48b1461072e578063a0cc6a6814610741575f80fd5b806388b7ab63146106ce57806391ddadf4146106e157806395d89b4114610700575f80fd5b8063406f84de116102b55780635c19a95c116102555780637b3a3d19116102255780637b3a3d19146106245780637ecebe001461066d5780637f2eecc31461068c57806384b0196e146106b3575f80fd5b80635c19a95c146105d85780635c7e5d5f146105eb57806370a08231146105fe57806377eea14614610611575f80fd5b8063532992c511610290578063532992c51461058c578063587cde1e1461059f5780635a049a70146105b25780635a4dd47d146105c5575f80fd5b8063406f84de1461054a5780634bf5d7e91461055d5780634d6d744114610565575f80fd5b80632a1eafd911610320578063313ce567116102fb578063313ce567146104aa5780633644e515146104e3578063397da79d146104eb5780633a46b1a814610537575f80fd5b80632a1eafd9146104715780632ff2e9dc1461047957806330adf81f14610483575f80fd5b80630db3a5581161035b5780630db3a558146103f957806318160ddd1461043357806323b872dd14610449578063286b1d0b1461045c575f80fd5b806306fdde0314610381578063095ea7b31461039f57806309dc8d92146103c2575b5f80fd5b61038961096b565b6040516103969190614294565b60405180910390f35b6103b26103ad3660046142ce565b6109fa565b6040519015158152602001610396565b6103ca610a10565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff9091168152602001610396565b61043b610aa1565b604051908152602001610396565b6103b26104573660046142f6565b610ad2565b61046f61046a36600461432f565b610bc5565b005b61043b610d30565b6103ca620f424081565b61043b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104d17f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610396565b61043b610d39565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610396565b61043b6105453660046142ce565b610d93565b61043b6105583660046142ce565b610ddb565b610389610dfb565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b61046f61059a366004614348565b610e05565b6105126105ad36600461432f565b610e2a565b61046f6105c036600461438e565b610e40565b61043b6105d33660046143d8565b610e67565b61046f6105e636600461432f565b610f8d565b61043b6105f93660046143d8565b610f9a565b61043b61060c36600461432f565b610fe0565b61051261061f3660046142ce565b611018565b6106376106323660046143ef565b611044565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610396565b61043b61067b36600461432f565b60016020525f908152604090205481565b61043b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b6106bb61130f565b604051610396979695949392919061443a565b61046f6106dc3660046145ce565b611447565b6106e9611476565b60405165ffffffffffff9091168152602001610396565b610389611488565b61043b61071636600461432f565b611514565b61046f61072936600461464d565b611526565b61046f61073c3660046146ba565b611536565b61043b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61046f61077636600461432f565b611560565b6105126115ac565b6104207f000000000000000000000000000000000000000000000000000000000000000081565b6103b26107b83660046142ce565b611607565b61043b6107cb36600461471c565b611613565b61046f6107de3660046146ba565b61161f565b61046f6107f136600461474c565b61163f565b61042061271081565b61046f61080d36600461479f565b61165c565b61046f61082036600461432f565b611696565b61046f6116a7565b61046f61083b3660046145ce565b6118c0565b61046f61084e3660046147f3565b6118e0565b61043b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b61043b610888366004614858565b600460209081525f928352604080842090915290825290205481565b61046f6108b2366004614889565b6118f0565b61043b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6103b26108ec3660046142ce565b600260209081525f928352604080842090915290825290205460ff1681565b61046f61091936600461464d565b61191b565b61046f61092c366004614889565b611947565b6103b261093f3660046142ce565b611967565b6105127f000000000000000000000000000000000000000000000000000000000000000081565b60605f805461097990614901565b80601f01602080910402602001604051908101604052809291908181526020018280546109a590614901565b80156109f05780601f106109c7576101008083540402835291602001916109f0565b820191905f5260205f20905b8154815290600101906020018083116109d357829003601f168201915b5050505050905090565b5f610a06338484611985565b5060015b92915050565b5f610a21610a1c6119f2565b6119fb565b15610a2b57505f90565b5f610a34611a15565b90505f610a47610a426119f2565b611a96565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1611610a96575f610a9a565b8082035b9250505090565b5f610aad610a426119f2565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bad5782811015610b78576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b610bb8858585611adf565b60019150505b9392505050565b610bcd611b37565b73ffffffffffffffffffffffffffffffffffffffff8116610c1a576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610c236119f2565b90505f610c31826001614979565b600a5490915061ffff90811690831610610cba57600b54600a80547fffffffffffffffffffff000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169190911761ffff83161790555b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915560405161ffff8316907f9f25fdcf794a19f398e3f72072c7ced095c8dedada1ce1fcd07194d1241bb2e0905f90a3505050565b5f610aad611a15565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610d6e57610d69611ba8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610d9e83611c42565b9050610da981611c83565b610db38482611ce1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b5f80610de683611c42565b9050610df181611c83565b610db38482611cef565b6060610d69611cfd565b610e1a84610e138686611d1d565b8484611d91565b610e248484611da5565b50505050565b5f610a0a82610e376119f2565b61ffff16611e33565b610e5685610e4e8787611d1d565b858585611f14565b610e608585611da5565b5050505050565b5f80610e716119f2565b90505f610e7d826119fb565b610e8e57610e89611f24565b610e93565b6213c6805b90505f610ea460646213c6806149c1565b90505f610eb182846149c1565b64ffffffffff166001901b90505f8284610ecb91906149e4565b9050610f82600183901c610edf8386614a07565b64ffffffffff16610ef09190614a25565b610f018464ffffffffff8516614a25565b610f0b9190614a3c565b610f1489611f58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610f3e9190614a25565b610f4c610a42600189614a4f565b610f7d907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1664ffffffffff8716614a25565b611fb1565b979650505050505050565b610f97338261202c565b50565b5f80610fa583611c42565b9050610fb081611c83565b610fb981611a96565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610ff282610fed6119f2565b611cef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f8061102383611c42565b905061102e81611c83565b61103c848261ffff16611e33565b949350505050565b5f808261ffff166110536119f2565b61ffff16111561108f576040517fc32cae0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85158061109a575084155b156110d1576040517f31e5050700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110da610a10565b90505f6110e688611f58565b90505f6110f288611f58565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16116111415782611143565b805b9450817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16857dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610156111e9576040517f557b2dbd0000000000000000000000000000000000000000000000000000000081527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808516600483015283166024820152604401610b6f565b337fbb7c3dcaa7b43f7670119fdaf5a34790f80be05722782103263b2f6a83496238866112357dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216610e67565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093168352602083018290529097500160405180910390a261129a87867dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612072565b6112cd6112a56115ac565b337f00000000000000000000000000000000000000000000000000000000000000008761208d565b611303576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505094509492505050565b5f606080828080838146308280604051908082528060200260200182016040528015611345578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461137890614901565b80601f01602080910402602001604051908101604052809291908181526020018280546113a490614901565b80156113ef5780601f106113c6576101008083540402835291602001916113ef565b820191905f5260205f20905b8154815290600101906020018083116113d257829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b61145f8761145989898989898961212d565b836121a9565b61146d8787878787876121f4565b50505050505050565b5f61147f6119f2565b61ffff16905090565b6003805461149590614901565b80601f01602080910402602001604051908101604052809291908181526020018280546114c190614901565b801561150c5780601f106114e35761010080835404028352916020019161150c565b820191905f5260205f20905b8154815290600101906020018083116114ef57829003601f168201915b505050505081565b5f610ff2826115216119f2565b611ce1565b610e608561145987878787612277565b61154888610e138a8a8a8a8a8a61212d565b6115568888888888886121f4565b5050505050505050565b61156981612314565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7c0c782cfb9e4eead85a014c03770fc21db63aea6d76999f12599b5f87b45e5d905f90a250565b600a545f9061ffff166115bd6119f2565b61ffff1610156115ea5750600a5462010000900473ffffffffffffffffffffffffffffffffffffffff1690565b50600b5473ffffffffffffffffffffffffffffffffffffffff1690565b5f610a06338484611adf565b5f61103c848484612326565b61163188610e138a8a8a8a8a8a61238a565b611556888888888888612406565b61164d836114598585611d1d565b6116578383611da5565b505050565b5f611668878787612326565b90505f6116778286868661251f565b905061168286612543565b61168c8188612586565b611556818961202c565b61169e611b37565b610f97816125f7565b6116af611b37565b5f6116b86119f2565b90505f6116c4826119fb565b6116cf5760016116d2565b60025b6116df9060ff1683614979565b600b5490915061ffff740100000000000000000000000000000000000000009091048116908316106117a457600d54600c80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055600b805461ffff831674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9091161790555b600c545f9061183c9061271090611800907f000000000000000000000000000000000000000000000000000000000000000061ffff16907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a25565b61180a9190614a6a565b600c5461183791907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16614a3c565b61276b565b600d80547fffff000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83169081179091556040519192509061ffff8416907f96314a09a36c5d72a0a2217d361631d67fa044438d6568c1c4436d10aeec76f7905f90a3505050565b6118d28761145989898989898961238a565b61146d878787878787612406565b61146d87610e4e89898989612277565b61190289610e4e8b8b8b8b8b8b61238a565b611910898989898989612406565b505050505050505050565b61192482612543565b61193385611459868686612326565b61193d8584612586565b610e60858561202c565b61195989610e4e8b8b8b8b8b8b61212d565b6119108989898989896121f4565b5f610bbe8361197584611c42565b612794565b5f610bbe8284614a7d565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610d6961286b565b5f611a07600283614ab4565b61ffff166001149050919050565b600b545f9074010000000000000000000000000000000000000000900461ffff16611a3e6119f2565b61ffff161015611a6f5750600c547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b50600d547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168261ffff161115611ad557611ad082612893565b610a0a565b620f424092915050565b611ae761289f565b611af083612314565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b2c57611b2c82612314565b6116578383836128e1565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611ba6576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051611bda9190614ac8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f61ffff821115611c7f576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611c8c6119f2565b90508061ffff168261ffff1610611cdd576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff808416600483015282166024820152604401610b6f565b5050565b5f610bbe83836129aa6129d8565b5f610bbe8383612a7c6129d8565b60606040518060a0016040528060658152602001614cc560659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610bbe906080015b60405160208183030381529060405280519060200120612ada565b610e24611da085858585612b3b565b612b76565b611daf8282612d3a565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611e6d576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b8015611f0b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611ecf83835f91825260209091200190565b805490915061ffff168510611f05575462010000900473ffffffffffffffffffffffffffffffffffffffff169250610a0a915050565b50611e94565b50929392505050565b610e60611da08686868686612dc3565b5f426213c680611f3261286b565b61ffff16611f409190614b9d565b611f4e9063661bd350614bc6565b610d699190614a07565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611c7f576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f03611feb576040517f23d359a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611ff957505f610a0a565b8161200661271085614a25565b6120109190614a3c565b905081600182038161202457612024614994565b049392505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120685761206881612314565b611cdd8282612e0b565b61207a61289f565b61208382612314565b611cdd8282612e26565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790525f90612124908690612eec565b95945050505050565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b5f6121b5848484612fa0565b90505f8160058111156121ca576121ca614be4565b036121d55750505050565b6121e0848484612fe4565b156121eb5750505050565b610e2481612b76565b3373ffffffffffffffffffffffffffffffffffffffff861614612261576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff86166024820152604401610b6f565b61226f868686868686612406565b505050505050565b5f61228182612543565b61228c858585611985565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c081018390526121249060e001611d76565b61231d8161312c565b610f9781613374565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f9061103c9060a001611d76565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f90610f829061010001611d76565b824211612448576040517f498ff9a200000000000000000000000000000000000000000000000000000000815242600482015260248101849052604401610b6f565b81421061248a576040517fb3fcd33e00000000000000000000000000000000000000000000000000000000815242600482015260248101839052604401610b6f565b6124948682612d3a565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a361226f868686611adf565b5f8061252d86868686613426565b9250905061253a81612b76565b50949350505050565b80421115610f97576040517ff88f049000000000000000000000000000000000000000000000000000000000815260048101829052426024820152604401610b6f565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114611657576040517fd021c5570000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610b6f565b6125ff613533565b5f6126086119f2565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526009602052604090209091506126399082613574565b61266f576040517f22ce1a0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61267882612314565b5f6126d86126868484611ce1565b5f6127107dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000061ffff16020492915050565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811615612758576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815230905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6127618161361d565b611657838261362b565b5f610a0a827dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613638565b5f8161ffff165f036127d2576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260096020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61283483835f91825260209091200190565b5461ffff9081169150851681111561284c57506127f9565b8461ffff168161ffff16149350505050610a0a565b505f949350505050565b5f6213c68061287e63661bd35042614c11565b6128889190614a6a565b610d69906001614a3c565b5f610a0a60058361364d565b6128aa610a1c6119f2565b15611ba6576040517f66f21c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128ea8261371a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161294991815260200190565b60405180910390a35f61295b82611f58565b90505f6129666119f2565b9050612972858361377f565b612989612983868361ffff16611e33565b8361378c565b6129938483613799565b610e606129a4858361ffff16611e33565b8361362b565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120610bbe908361364d565b5f7f000000000000000000000000000000000000000000000000000000000000000061ffff168361ffff1611612a1957612a1284846137a6565b9050610bbe565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600660205260408120549003612a6e57612a12847f00000000000000000000000000000000000000000000000000000000000000006137a6565b61103c84848463ffffffff16565b5f610bbe612a8a84846138b7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612ab48585613a58565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160161276b565b5f612ae3610d39565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612b49868686613a86565b90925090505f826005811115612b6157612b61614be4565b14612b6c5781610f82565b610f828782613ace565b5f816005811115612b8957612b89614be4565b03612b915750565b6001816005811115612ba557612ba5614be4565b03612bdc576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612bf057612bf0614be4565b03612c27576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612c3b57612c3b614be4565b03612c72576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612c8657612c86614be4565b03612cbd576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612cd157612cd1614be4565b03612d08576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615611cdd576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610b6f565b5f805f612dd287878787613426565b90925090505f826005811115612dea57612dea614be4565b14612df55781612dff565b612dff8882613ace565b98975050505050505050565b612e1361289f565b612e1c82612314565b611cdd8282613b11565b612e2f8261371a565b805f03612e6b576040517f77b8dde300000000000000000000000000000000000000000000000000000000815260048101829052602401610b6f565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f612ec282611f58565b9050612ecd8161361d565b612ed78382613799565b611657612ee684610e376119f2565b8261362b565b5f73ffffffffffffffffffffffffffffffffffffffff83163b612f1057505f610a0a565b60608373ffffffffffffffffffffffffffffffffffffffff1683604051612f379190614c24565b5f604051808303815f865af19150503d805f8114612f70576040519150601f19603f3d011682016040523d82523d5f602084013e612f75565b606091505b50909250905081801561103c57508051158061103c57508080602001905181019061103c9190614c3f565b5f805f612fad8585613b7c565b90925090505f826005811115612fc557612fc5614be4565b14612fd05781612fda565b612fda8682613ace565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401613011929190614c5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516130929190614c24565b5f60405180830381855afa9150503d805f81146130ca576040519150601f19603f3d011682016040523d82523d5f602084013e6130cf565b606091505b50915091508180156130e357506020815110155b8015612fda575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906131219083016020908101908401614c76565b149695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260066020526040902054156131595750565b5f613184827f00000000000000000000000000000000000000000000000000000000000000006137a6565b73ffffffffffffffffffffffffffffffffffffffff83165f818152600660209081526040808320815180830183527f000000000000000000000000000000000000000000000000000000000000000061ffff9081168083527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff898116848801818152865460018082018955978b52898b2096519151918616620100009285168302179601959095559888526008875285882086518088019097529186528587018981528254958601835591885295872094519051911694160292909217910155919250900361326f575050565b6040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff808416917f0000000000000000000000000000000000000000000000000000000000000000909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3604080515f81527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316602082015273ffffffffffffffffffffffffffffffffffffffff8416917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050565b5f613386826133816119f2565b6138b7565b90507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81161561341c576040517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff83169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611cdd8282613799565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561345b5750600390505f61352a565b8460ff16601b1415801561347357508460ff16601c14155b156134835750600490505f61352a565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156134d3573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615613521575f81613525565b60015f5b915091505b94509492505050565b61353e610a1c6119f2565b611ba6576040517f90bfab2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f908015806135b857505f8481526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015461ffff908116908416115b915081156136165760408051602080820190925261ffff858116825286546001810188555f8881529390932091519190920180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016919092161790555b5092915050565b611657600561197a83613bc0565b611cdd82613d7f83613d83565b5f8183106136465781610bbe565b5090919050565b5f8161ffff165f0361368b576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015613711577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6136c985835f91825260209091200190565b805490915061ffff80861691161161370b57546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169150610a0a9050565b5061368e565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610f97576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610b6f565b611cdd82613e3383613e3e565b611cdd82613e3383613d83565b611cdd82613d7f83613e3e565b6040517f406f84de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015261ffff831660248301525f917f00000000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691620f4240917f00000000000000000000000000000000000000000000000000000000000000009091169063406f84de90604401602060405180830381865afa158015613885573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138a99190614c76565b028161202457612024614994565b5f806138c38484613e6d565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f036138f5575f915050610a0a565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81165f6139258661ffff8716611e33565b90505f6139328787613e78565b90505b8561ffff168161ffff161015613a2d5761394e816119fb565b1580613961575061395f8282612794565b155b613a255761271061ffff7f0000000000000000000000000000000000000000000000000000000000000000167dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851602047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16830192507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80168310613a25575050507dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff039050610a0a565b600101613935565b50612fda7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841683614c11565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600660205260408120610bbe908361364d565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416613abf87838884613426565b9350935050505b935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613b09576005610bbe565b505f92915050565b5f613b1c8284613ed9565b90505f613b298483613f02565b90505f613b3885610fed6119f2565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03613b68575050505050565b613b72828261378c565b610e60838261362b565b5f808251604114613b925750600290505f613bb9565b6020830151604084015160608501515f1a9190613bb187848484613426565b945094505050505b9250929050565b5f805f613bcb6119f2565b86549091505f819003613c5b578660405180604001604052808461ffff168152602001613bfc5f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250613ac6915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f613c9088835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050613cca858763ffffffff8a16565b815490945061ffff9081169084161115613d44576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155613d74565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b505050935093915050565b0190565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526008602052604081208190613db4908585613bc0565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f610bbe8284614c8d565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610e60908383613bc0565b5f610bbe8383613a58565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081205415613eb157613eac8383614168565b610bbe565b507f000000000000000000000000000000000000000000000000000000000000000092915050565b5f73ffffffffffffffffffffffffffffffffffffffff831615613efc5782610bbe565b50919050565b5f80613f0c6119f2565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260076020526040812080549293509190819003613ff85760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4859350505050610a0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61402d83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff908116908516111561411a576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff00000000000000000000000000000000000000000000909116939092169290921717905561415e565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f8161ffff165f036141a6576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260066020526040902080545b8015612861577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61420883835f91825260209091200190565b5461ffff908116915085168111614223579250610a0a915050565b506141cd565b5f5b8381101561424357818101518382015260200161422b565b50505f910152565b5f8151808452614262816020860160208601614229565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610bbe602083018461424b565b803573ffffffffffffffffffffffffffffffffffffffff811681146142c9575f80fd5b919050565b5f80604083850312156142df575f80fd5b6142e8836142a6565b946020939093013593505050565b5f805f60608486031215614308575f80fd5b614311846142a6565b925061431f602085016142a6565b9150604084013590509250925092565b5f6020828403121561433f575f80fd5b610bbe826142a6565b5f805f806080858703121561435b575f80fd5b614364856142a6565b966020860135965060408601359560600135945092505050565b803560ff811681146142c9575f80fd5b5f805f805f60a086880312156143a2575f80fd5b6143ab866142a6565b9450602086013593506143c06040870161437e565b94979396509394606081013594506080013592915050565b5f602082840312156143e8575f80fd5b5035919050565b5f805f8060808587031215614402575f80fd5b8435935060208501359250614419604086016142a6565b9150606085013561ffff8116811461442f575f80fd5b939692955090935050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261447660e084018a61424b565b8381036040850152614488818a61424b565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b818110156144e8578351835292840192918401916001016144cc565b50909c9b505050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112614536575f80fd5b813567ffffffffffffffff80821115614551576145516144fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715614597576145976144fa565b816040528381528660208588010111156145af575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a0312156145e4575f80fd5b6145ed886142a6565b96506145fb602089016142a6565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115614632575f80fd5b61463e8a828b01614527565b91505092959891949750929550565b5f805f805f60a08688031215614661575f80fd5b61466a866142a6565b9450614678602087016142a6565b93506040860135925060608601359150608086013567ffffffffffffffff8111156146a1575f80fd5b6146ad88828901614527565b9150509295509295909350565b5f805f805f805f80610100898b0312156146d2575f80fd5b6146db896142a6565b97506146e960208a016142a6565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561472e575f80fd5b614737846142a6565b95602085013595506040909401359392505050565b5f805f6060848603121561475e575f80fd5b614767846142a6565b925060208401359150604084013567ffffffffffffffff811115614789575f80fd5b61479586828701614527565b9150509250925092565b5f805f805f8060c087890312156147b4575f80fd5b6147bd876142a6565b955060208701359450604087013593506147d96060880161437e565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a031215614809575f80fd5b614812886142a6565b9650614820602089016142a6565b9550604088013594506060880135935061483c6080890161437e565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215614869575f80fd5b614872836142a6565b9150614880602084016142a6565b90509250929050565b5f805f805f805f805f6101208a8c0312156148a2575f80fd5b6148ab8a6142a6565b98506148b960208b016142a6565b975060408a0135965060608a0135955060808a0135945060a08a013593506148e360c08b0161437e565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061491557607f821691505b602082108103613efc577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f64ffffffffff808416806149d8576149d8614994565b92169190910492915050565b5f64ffffffffff808416806149fb576149fb614994565b92169190910692915050565b64ffffffffff8281168282160390808211156136165761361661494c565b8082028115828204841417610a0a57610a0a61494c565b80820180821115610a0a57610a0a61494c565b61ffff8281168282160390808211156136165761361661494c565b5f82614a7857614a78614994565b500490565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156136165761361661494c565b5f61ffff808416806149fb576149fb614994565b5f8083545f60018260011c91506001831680614ae557607f831692505b60208084108203614b1d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b315760018114614b6457614b8f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b8f565b5f8a8152602090205f5b86811015614b875781548b820152908501908301614b6e565b505084890196505b509498975050505050505050565b64ffffffffff818116838216028082169190828114614bbe57614bbe61494c565b505092915050565b64ffffffffff8181168382160190808211156136165761361661494c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b81810381811115610a0a57610a0a61494c565b5f8251614c35818460208701614229565b9190910192915050565b5f60208284031215614c4f575f80fd5b81518015158114610bbe575f80fd5b828152604060208201525f61103c604083018461424b565b5f60208284031215614c86575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156136165761361661494c56fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220e9a5c323e4846d510175bc0850b5b24bacb87eb2cacb699699eb4a357169f82b64736f6c63430008170033a26469706673582212207bcea3702a1d9a10bb15a5f0629592cb122d9d4e85120b6e7c12805643026ea364736f6c63430008170033" } diff --git a/modules/m-core/bytecode/Registrar.json b/modules/m-core/bytecode/Registrar.json index e6965bb4..40384c66 100644 --- a/modules/m-core/bytecode/Registrar.json +++ b/modules/m-core/bytecode/Registrar.json @@ -1 +1 @@ -{ "bytecode": "0x61014060405234801562000011575f80fd5b50604051620012f3380380620012f383398101604081905262000034916200036b565b6001600160a01b038116610100819052620000625760405163dfac64ef60e01b815260040160405180910390fd5b5f8190505f6001600160a01b0316816001600160a01b0316635548917f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000d391906200036b565b6001600160a01b03166080819052036200010057604051635788a27960e11b815260040160405180910390fd5b5f6001600160a01b0316816001600160a01b031663af63a3e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000147573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016d91906200036b565b6001600160a01b031660a0819052036200019a57604051631412fc3f60e11b815260040160405180910390fd5b5f816001600160a01b031663e94bb2236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fe91906200036b565b6001600160a01b031660c08190529050806200022d576040516333927a8160e21b815260040160405180910390fd5b5f6001600160a01b0316826001600160a01b031663160d66ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000274573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029a91906200036b565b6001600160a01b031661012081905203620002c8576040516316d3e4a360e01b815260040160405180910390fd5b5f6001600160a01b0316816001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033591906200036b565b6001600160a01b031660e0819052036200036257604051630306120160e01b815260040160405180910390fd5b5050506200039a565b5f602082840312156200037c575f80fd5b81516001600160a01b038116811462000393575f80fd5b9392505050565b60805160a05160c05160e0516101005161012051610efc620003f75f395f61033701525f61022501525f61036601525f8181610310015261052601525f81816102a6015261063401525f81816101fe01526109e30152610efc5ff3fe608060405234801561000f575f80fd5b5060043610610163575f3560e01c8063abf306a8116100c7578063d7d1c1c01161007d578063f294bd9211610063578063f294bd9214610332578063f52c93c514610359578063fbfa77cf14610361575f80fd5b8063d7d1c1c0146102f8578063e94bb2231461030b575f80fd5b8063b3d0c202116100ad578063b3d0c202146102c8578063b4d87a12146102d2578063d48d8423146102e5575f80fd5b8063abf306a814610281578063af63a3e1146102a1575f80fd5b80635548917f1161011c5780638eaa6ac0116101025780638eaa6ac01461024757806391ddadf41461025a5780639662ac5814610279575f80fd5b80635548917f146101f95780638df3227f14610220575f80fd5b80632595f8cf1161014c5780632595f8cf146101945780634bf5d7e9146101b75780634d6d7441146101cc575f80fd5b806307a0033014610167578063246c53081461017c575b5f80fd5b61017a610175366004610b41565b610388565b005b6213c6805b6040519081526020015b60405180910390f35b6101a76101a2366004610ba9565b61042a565b604051901515815260200161018b565b6101bf610514565b60405161018b9190610bf1565b6101d4610523565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018b565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b610181610255366004610c5b565b6105b1565b61026261061f565b60405165ffffffffffff909116815260200161018b565b6101d4610631565b61029461028f366004610c72565b61069b565b60405161018b9190610cb1565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b636322c962610181565b61017a6102e0366004610d18565b610796565b61017a6102f3366004610d18565b61086b565b6101a7610306366004610d18565b61093f565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6101d46109e0565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b610390610a4a565b805f806103e9856040517f56414c55450000000000000000000000000000000000000000000000000000006020820152602581018290525f90604501604051602081830303815290604052805190602001209050919050565b81526020019081526020015f20819055827f40d4a420f99fca87993b89b3251153e5ffb22d82a70bf764d19ba9f0621d653560405160405180910390a35050565b5f805b828110156105075760015f806104e38888888781811061044f5761044f610d46565b90506020020160208101906104649190610d73565b6040517f494e5f4c495354000000000000000000000000000000000000000000000000006020820152602781018390527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660478201525f90605b0160405160208183030381529060405280519060200120905092915050565b81526020019081526020015f2054146104ff575f91505061050d565b60010161042d565b50600190505b9392505050565b606061051e610af9565b905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190610d8e565b5f805f61060a846040517f56414c55450000000000000000000000000000000000000000000000000000006020820152602581018290525f90604501604051602081830303815290604052805190602001209050919050565b81526020019081526020015f20549050919050565b5f610628610b19565b61ffff16905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f803e3d5ffd5b60608167ffffffffffffffff8111156106b6576106b6610da9565b6040519080825280602002602001820160405280156106df578160200160208202803683370190505b5090505f5b8281101561078f575f8061075c86868581811061070357610703610d46565b905060200201356040517f56414c55450000000000000000000000000000000000000000000000000000006020820152602581018290525f90604501604051602081830303815290604052805190602001209050919050565b81526020019081526020015f205482828151811061077c5761077c610d46565b60209081029190910101526001016106e4565b5092915050565b61079e610a4a565b604080517f494e5f4c49535400000000000000000000000000000000000000000000000000602080830191909152602782018590527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660478301528251808303603b018152605b9092018084528251928201929092205f908152908190529182206001905573ffffffffffffffffffffffffffffffffffffffff83169184917f56573e227f8e2cfaf9c513a7e1586b18527b6f4010b703025003741b6a451ad59190a35050565b610873610a4a565b604080517f494e5f4c49535400000000000000000000000000000000000000000000000000602080830191909152602782018590527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660478301528251808303603b018152605b9092018084528251928201929092205f9081529081905291822082905573ffffffffffffffffffffffffffffffffffffffff83169184917f72e193b20c528dc6c7ac5d8f5bc4354aa22b592c0fdca040fa926c2ff90534f79190a35050565b5f600181806109c886866040517f494e5f4c495354000000000000000000000000000000000000000000000000006020820152602781018390527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660478201525f90605b0160405160208183030381529060405280519060200120905092915050565b81526020019081526020015f20541490505b92915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f803e3d5ffd5b610a52610523565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610ac05750610a906109e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610af7576040517f72fab01a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60606040518060a0016040528060658152602001610e6260659139905090565b5f6213c680610b2c636322c96242610e03565b610b369190610e16565b61051e906001610e4e565b5f8060408385031215610b52575f80fd5b50508035926020909101359150565b5f8083601f840112610b71575f80fd5b50813567ffffffffffffffff811115610b88575f80fd5b6020830191508360208260051b8501011115610ba2575f80fd5b9250929050565b5f805f60408486031215610bbb575f80fd5b83359250602084013567ffffffffffffffff811115610bd8575f80fd5b610be486828701610b61565b9497909650939450505050565b5f602080835283518060208501525f5b81811015610c1d57858101830151858201604001528201610c01565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b5f60208284031215610c6b575f80fd5b5035919050565b5f8060208385031215610c83575f80fd5b823567ffffffffffffffff811115610c99575f80fd5b610ca585828601610b61565b90969095509350505050565b602080825282518282018190525f9190848201906040850190845b81811015610ce857835183529284019291840191600101610ccc565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610d15575f80fd5b50565b5f8060408385031215610d29575f80fd5b823591506020830135610d3b81610cf4565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610d83575f80fd5b813561050d81610cf4565b5f60208284031215610d9e575f80fd5b815161050d81610cf4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156109da576109da610dd6565b5f82610e49577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156109da576109da610dd656fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a264697066735822122080e3f369ad129cea0f6fd4f58ad37e409f5940f5b994bc20685b283dd857a4e764736f6c63430008170033" } +{ "bytecode": "0x61014060405234801562000011575f80fd5b50604051620012f3380380620012f383398101604081905262000034916200036b565b6001600160a01b038116610100819052620000625760405163dfac64ef60e01b815260040160405180910390fd5b5f8190505f6001600160a01b0316816001600160a01b0316635548917f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000d391906200036b565b6001600160a01b03166080819052036200010057604051635788a27960e11b815260040160405180910390fd5b5f6001600160a01b0316816001600160a01b031663af63a3e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000147573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016d91906200036b565b6001600160a01b031660a0819052036200019a57604051631412fc3f60e11b815260040160405180910390fd5b5f816001600160a01b031663e94bb2236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fe91906200036b565b6001600160a01b031660c08190529050806200022d576040516333927a8160e21b815260040160405180910390fd5b5f6001600160a01b0316826001600160a01b031663160d66ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000274573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029a91906200036b565b6001600160a01b031661012081905203620002c8576040516316d3e4a360e01b815260040160405180910390fd5b5f6001600160a01b0316816001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033591906200036b565b6001600160a01b031660e0819052036200036257604051630306120160e01b815260040160405180910390fd5b5050506200039a565b5f602082840312156200037c575f80fd5b81516001600160a01b038116811462000393575f80fd5b9392505050565b60805160a05160c05160e0516101005161012051610efc620003f75f395f61033701525f61022501525f61036601525f8181610310015261052601525f81816102a6015261063401525f81816101fe01526109e30152610efc5ff3fe608060405234801561000f575f80fd5b5060043610610163575f3560e01c8063abf306a8116100c7578063d7d1c1c01161007d578063f294bd9211610063578063f294bd9214610332578063f52c93c514610359578063fbfa77cf14610361575f80fd5b8063d7d1c1c0146102f8578063e94bb2231461030b575f80fd5b8063b3d0c202116100ad578063b3d0c202146102c8578063b4d87a12146102d2578063d48d8423146102e5575f80fd5b8063abf306a814610281578063af63a3e1146102a1575f80fd5b80635548917f1161011c5780638eaa6ac0116101025780638eaa6ac01461024757806391ddadf41461025a5780639662ac5814610279575f80fd5b80635548917f146101f95780638df3227f14610220575f80fd5b80632595f8cf1161014c5780632595f8cf146101945780634bf5d7e9146101b75780634d6d7441146101cc575f80fd5b806307a0033014610167578063246c53081461017c575b5f80fd5b61017a610175366004610b41565b610388565b005b6213c6805b6040519081526020015b60405180910390f35b6101a76101a2366004610ba9565b61042a565b604051901515815260200161018b565b6101bf610514565b60405161018b9190610bf1565b6101d4610523565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018b565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b610181610255366004610c5b565b6105b1565b61026261061f565b60405165ffffffffffff909116815260200161018b565b6101d4610631565b61029461028f366004610c72565b61069b565b60405161018b9190610cb1565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b63661bd350610181565b61017a6102e0366004610d18565b610796565b61017a6102f3366004610d18565b61086b565b6101a7610306366004610d18565b61093f565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6101d46109e0565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b610390610a4a565b805f806103e9856040517f56414c55450000000000000000000000000000000000000000000000000000006020820152602581018290525f90604501604051602081830303815290604052805190602001209050919050565b81526020019081526020015f20819055827f40d4a420f99fca87993b89b3251153e5ffb22d82a70bf764d19ba9f0621d653560405160405180910390a35050565b5f805b828110156105075760015f806104e38888888781811061044f5761044f610d46565b90506020020160208101906104649190610d73565b6040517f494e5f4c495354000000000000000000000000000000000000000000000000006020820152602781018390527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660478201525f90605b0160405160208183030381529060405280519060200120905092915050565b81526020019081526020015f2054146104ff575f91505061050d565b60010161042d565b50600190505b9392505050565b606061051e610af9565b905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190610d8e565b5f805f61060a846040517f56414c55450000000000000000000000000000000000000000000000000000006020820152602581018290525f90604501604051602081830303815290604052805190602001209050919050565b81526020019081526020015f20549050919050565b5f610628610b19565b61ffff16905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f803e3d5ffd5b60608167ffffffffffffffff8111156106b6576106b6610da9565b6040519080825280602002602001820160405280156106df578160200160208202803683370190505b5090505f5b8281101561078f575f8061075c86868581811061070357610703610d46565b905060200201356040517f56414c55450000000000000000000000000000000000000000000000000000006020820152602581018290525f90604501604051602081830303815290604052805190602001209050919050565b81526020019081526020015f205482828151811061077c5761077c610d46565b60209081029190910101526001016106e4565b5092915050565b61079e610a4a565b604080517f494e5f4c49535400000000000000000000000000000000000000000000000000602080830191909152602782018590527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660478301528251808303603b018152605b9092018084528251928201929092205f908152908190529182206001905573ffffffffffffffffffffffffffffffffffffffff83169184917f56573e227f8e2cfaf9c513a7e1586b18527b6f4010b703025003741b6a451ad59190a35050565b610873610a4a565b604080517f494e5f4c49535400000000000000000000000000000000000000000000000000602080830191909152602782018590527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660478301528251808303603b018152605b9092018084528251928201929092205f9081529081905291822082905573ffffffffffffffffffffffffffffffffffffffff83169184917f72e193b20c528dc6c7ac5d8f5bc4354aa22b592c0fdca040fa926c2ff90534f79190a35050565b5f600181806109c886866040517f494e5f4c495354000000000000000000000000000000000000000000000000006020820152602781018390527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660478201525f90605b0160405160208183030381529060405280519060200120905092915050565b81526020019081526020015f20541490505b92915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f803e3d5ffd5b610a52610523565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610ac05750610a906109e0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610af7576040517f72fab01a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60606040518060a0016040528060658152602001610e6260659139905090565b5f6213c680610b2c63661bd35042610e03565b610b369190610e16565b61051e906001610e4e565b5f8060408385031215610b52575f80fd5b50508035926020909101359150565b5f8083601f840112610b71575f80fd5b50813567ffffffffffffffff811115610b88575f80fd5b6020830191508360208260051b8501011115610ba2575f80fd5b9250929050565b5f805f60408486031215610bbb575f80fd5b83359250602084013567ffffffffffffffff811115610bd8575f80fd5b610be486828701610b61565b9497909650939450505050565b5f602080835283518060208501525f5b81811015610c1d57858101830151858201604001528201610c01565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b5f60208284031215610c6b575f80fd5b5035919050565b5f8060208385031215610c83575f80fd5b823567ffffffffffffffff811115610c99575f80fd5b610ca585828601610b61565b90969095509350505050565b602080825282518282018190525f9190848201906040850190845b81811015610ce857835183529284019291840191600101610ccc565b50909695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610d15575f80fd5b50565b5f8060408385031215610d29575f80fd5b823591506020830135610d3b81610cf4565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610d83575f80fd5b813561050d81610cf4565b5f60208284031215610d9e575f80fd5b815161050d81610cf4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156109da576109da610dd6565b5f82610e49577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156109da576109da610dd656fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a26469706673582212200a0c0a55c2e0eb0c25754573a708b569ab026719b289cbf421f59aa7286248d664736f6c63430008170033" } diff --git a/modules/m-core/bytecode/StandardGovernor.json b/modules/m-core/bytecode/StandardGovernor.json index e9ba0249..a41c6b17 100644 --- a/modules/m-core/bytecode/StandardGovernor.json +++ b/modules/m-core/bytecode/StandardGovernor.json @@ -1 +1 @@ -{ "bytecode": "0x6101a060405234801562000011575f80fd5b50604051620055dc380380620055dc83398101604081905262000034916200031e565b60408051808201909152601081526f29ba30b73230b93223b7bb32b93737b960811b602082015289815f6200006a82826200045f565b504660805262000079620001ba565b60a052506001600160a01b03811660c0819052620000aa576040516316d3e4a360e01b815260040160405180910390fd5b50506001600160a01b03881660e0819052620000d9576040516338a401b960e21b815260040160405180910390fd5b6001600160a01b038716610140819052620001075760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038516610100819052620001355760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0384166101208190526200016357604051630306120160e01b815260040160405180910390fd5b6001600160a01b0383166101608190526200019157604051631fb9659f60e21b815260040160405180910390fd5b6200019c8662000256565b620001a782620002c7565b6101805250620005a59650505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001ee91906200052b565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381166200027e57604051634e71231360e11b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b80516001600160a01b038116811462000319575f80fd5b919050565b5f805f805f805f805f6101208a8c03121562000338575f80fd5b620003438a62000302565b98506200035360208b0162000302565b97506200036360408b0162000302565b96506200037360608b0162000302565b95506200038360808b0162000302565b94506200039360a08b0162000302565b9350620003a360c08b0162000302565b925060e08a015191506101008a015190509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003ea57607f821691505b6020821081036200040957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045a57805f5260205f20601f840160051c81016020851015620004365750805b601f840160051c820191505b8181101562000457575f815560010162000442565b50505b505050565b81516001600160401b038111156200047b576200047b620003c1565b62000493816200048c8454620003d5565b846200040f565b602080601f831160018114620004c9575f8415620004b15750858301515b5f19600386901b1c1916600185901b17855562000523565b5f85815260208120601f198616915b82811015620004f957888601518255948401946001909101908401620004d8565b50858210156200051757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f8083546200053a81620003d5565b600182811680156200055557600181146200056b5762000599565b60ff198416875282151583028701945062000599565b875f526020805f205f5b85811015620005905781548a82015290840190820162000575565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051610140516101605161018051614f6f6200066d5f395f818161090b015261312801525f8181610c9c01526131b301525f81816109a30152611b8501525f8181610d02015261115201525f818161059701528181610e2f015281816126c0015261273b01525f8181610ccf0152610f8d01525f81816104d101528181610d320152818161167b01528181611c2a01528181611d5a015281816130b50152613a9c01525f6113b501525f6113800152614f6f5ff3fe6080604052600436106103a8575f3560e01c80637d5e81e2116101e9578063c27cabb511610108578063dd4e2ba51161009d578063f294bd921161006d578063f294bd9214610c8b578063f52c93c514610cbe578063fbfa77cf14610cf1578063fc0c546a14610d24575f80fd5b8063dd4e2ba514610bf2578063deaaa7cc14610c06578063eb9019d414610c39578063f046c64614610c58575f80fd5b8063c9167e6c116100d8578063c9167e6c14610b62578063cee8770814610b81578063d11d19c214610ba0578063d48d842314610bd3575f80fd5b8063c27cabb514610add578063c59057e414610af2578063c64d2ee614610b11578063c7f758a814610b30575f80fd5b80638e9d8c341161017e578063a72246871161014e578063a722468714610a61578063b4d87a1214610a8d578063b58131b014610aac578063c01f9e3714610abe575f80fd5b80638e9d8c34146109c557806391ddadf4146109f857806396ccd67314610a235780639b9e9cf814610a42575f80fd5b8063849a83b4116101b9578063849a83b41461092d57806384b0196e1461094c5780638968eb07146109735780638df3227f14610992575f80fd5b80637d5e81e21461083a5780637fcfb164146108595780638233c0a71461088457806383c6a8d3146108fa575f80fd5b80633644e515116102d5578063544ffc9c1161026a57806364a38bf91161023a57806364a38bf9146107a757806370edcbc4146107c657806375691bff146107e55780637b3c71d31461081b575f80fd5b8063544ffc9c146106f557806355a73c531461074a57806356781388146107695780635b18c26a14610788575f80fd5b806343859632116102a5578063438596321461066a5780634bf5d7e9146106a35780634d8e0825146106b7578063519c9587146106d6575f80fd5b80633644e515146105f75780633932abb11461060b5780633bccf4fd1461061f5780633e4f49e61461063e575f80fd5b80631703a0181161034b5780632656227d1161031b5780632656227d146105735780632b20e397146105865780632d63f693146105b957806330717129146105d8575f80fd5b80631703a018146104f3578063189abd1914610506578063230bcb371461052557806324b2c7b314610554575f80fd5b80630dd320e9116103865780630dd320e91461041557806310bf506814610434578063143489d014610453578063160d66ae146104c0575f80fd5b806302a251a3146103ac57806306fdde03146103d357806307a00330146103f4575b5f80fd5b3480156103b7575f80fd5b506103c0610d56565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610d62565b6040516103ca9190613b85565b3480156103ff575f80fd5b5061041361040e366004613b97565b610df1565b005b348015610420575f80fd5b506103c061042f366004613d26565b610ea0565b34801561043f575f80fd5b5061041361044e366004613dc2565b610f6a565b34801561045e575f80fd5b5061049b61046d366004613dc2565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ca565b3480156104cb575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104fe575f80fd5b5060016103c0565b348015610511575f80fd5b50610413610520366004613dc2565b610ff3565b348015610530575f80fd5b5061054461053f366004613dd9565b61117d565b60405190151581526020016103ca565b34801561055f575f80fd5b506103c061056e366004613e01565b6111c0565b6103c0610581366004614001565b6111d8565b348015610591575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c4575f80fd5b506103c06105d3366004613dc2565b6112cd565b3480156105e3575f80fd5b506103c06105f236600461408b565b6112f5565b348015610602575f80fd5b506103c061137d565b348015610616575f80fd5b506103c06113d7565b34801561062a575f80fd5b506103c0610639366004614160565b6113e0565b348015610649575f80fd5b5061065d610658366004613dc2565b611419565b6040516103ca9190614210565b348015610675575f80fd5b5061054461068436600461421e565b600260209081525f928352604080842090915290825290205460ff1681565b3480156106ae575f80fd5b506103e7611501565b3480156106c2575f80fd5b506103c06106d1366004614248565b61150b565b3480156106e1575f80fd5b506104136106f036600461427a565b611515565b348015610700575f80fd5b5061072f61070f366004613dc2565b5f8181526001602081905260408220908101546002909101549093909250565b604080519384526020840192909252908201526060016103ca565b348015610755575f80fd5b506103c06107643660046142b3565b611536565b348015610774575f80fd5b506103c06107833660046142b3565b611548565b348015610793575f80fd5b506103c06107a23660046142d4565b611563565b3480156107b2575f80fd5b506103c06107c1366004614338565b611597565b3480156107d1575f80fd5b506103c06107e0366004614338565b6115b9565b3480156107f0575f80fd5b506103c06107ff366004613dd9565b600760209081525f928352604080842090915290825290205481565b348015610826575f80fd5b506103c06108353660046143dd565b6115f9565b348015610845575f80fd5b506103c0610854366004614427565b61163b565b348015610864575f80fd5b506103c0610873366004613dc2565b60066020525f908152604090205481565b34801561088f575f80fd5b506108ce61089e366004613dc2565b5f908152600560205260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016103ca565b348015610905575f80fd5b506103c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610938575f80fd5b506103c0610947366004613e01565b6117c5565b348015610957575f80fd5b50610960611825565b6040516103ca97969594939291906144fb565b34801561097e575f80fd5b506103c061098d366004614583565b61195d565b34801561099d575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d0575f80fd5b506103c07fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610a03575f80fd5b50610a0c6119cc565b60405165ffffffffffff90911681526020016103ca565b348015610a2e575f80fd5b506103c0610a3d3660046143dd565b6119d5565b348015610a4d575f80fd5b506103c0610a5c366004614610565b6119e2565b348015610a6c575f80fd5b5060035461049b9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a98575f80fd5b50610413610aa736600461421e565b611a64565b348015610ab7575f80fd5b505f6103c0565b348015610ac9575f80fd5b506103c0610ad8366004613dc2565b611a7a565b348015610ae8575f80fd5b506103c060045481565b348015610afd575f80fd5b506103c0610b0c366004614001565b611a91565b348015610b1c575f80fd5b506103c0610b2b3660046146c4565b611ab4565b348015610b3b575f80fd5b50610b4f610b4a366004613dc2565b611b06565b6040516103ca9796959493929190614737565b348015610b6d575f80fd5b50610413610b7c366004613dd9565b611b6d565b348015610b8c575f80fd5b506103c0610b9b366004614795565b611c8a565b348015610bab575f80fd5b506103c07f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610bde575f80fd5b50610413610bed36600461421e565b611cda565b348015610bfd575f80fd5b506103e7611cec565b348015610c11575f80fd5b506103c07f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c44575f80fd5b506103c0610c53366004613dd9565b611d0c565b348015610c63575f80fd5b506103c07f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610c96575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cc9575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cfc575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610d2f575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061049b565b5f805b61ffff16905090565b60605f8054610d7090614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9c90614811565b8015610de75780601f10610dbe57610100808354040283529160200191610de7565b820191905f5260205f20905b815481529060010190602001808311610dca57829003601f168201915b5050505050905090565b610df9611dc5565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610e86575f80fd5b505af1158015610e98573d5f803e3d5ffd5b505050505050565b5f610f0587610eff8888604051602001610ebb929190614862565b604051602081830303815290604052805190602001208787604051602001610ee49291906148a2565b60405160208183030381529060405280519060200120611e00565b84611e5c565b610f5f87878787878267ffffffffffffffff811115610f2657610f26613c20565b604051908082528060200260200182016040528015610f5957816020015b6060815260200190600190039081610f445790505b50611ea7565b979650505050505050565b333014801590610fb057503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15610fe7576040517fec4acc1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff081612011565b50565b5f610ffd82611419565b90506006816007811115611013576110136141aa565b1415801561103357506003816007811115611030576110306141aa565b14155b1561107557806040517f3c726c1700000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b60405180910390fd5b5f82815260056020526040812060010154908190036110c0576040517f2c66d4a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260056020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556001909101939093555183815273ffffffffffffffffffffffffffffffffffffffff90921691829186917f847147bb46f853e52eedf4997e56154050d17c103e1bfe61a185f02a7b6b66c0910160405180910390a3611177817f00000000000000000000000000000000000000000000000000000000000000008461204c565b50505050565b5f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff861684526007835281842085855290925290912054145b92915050565b5f610f5f33888888886111d3888a6148db565b611ea7565b5f6111e485858561208d565b5f60016111ef612230565b6111f99190614978565b905061121f845f815181106112105761121061499a565b60200260200101518283612239565b5f81815260056020526040902060018101548154929450909173ffffffffffffffffffffffffffffffffffffffff1681156112c1575f85815260056020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560019081018490559091529020546112c19082906301000000900473ffffffffffffffffffffffffffffffffffffffff168461204c565b50505050949350505050565b5f8181526001602081905260408220546112eb919061ffff16614978565b61ffff1692915050565b5f61135e89610eff8a8a604051602001611310929190614862565b6040516020818303038152906040528051906020012089896040516020016113399291906148a2565b60405160208183030381529060405280519060200120611359898961232d565b612410565b61137089898989896111d3898b6148db565b9998505050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146113b2576113ad61245c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f610d596124f6565b5f61140f6113f96113f1888861252c565b868686612573565b878760405180602001604052805f815250612597565b9695505050505050565b5f818152600160205260408120805462010000900460ff161561143f5750600792915050565b5f611448612230565b825490915061ffff165f81900361148b576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061ffff168261ffff1610156114a557505f949350505050565b8061ffff808216908416036114c05750600195945050505050565b83600101548460020154116114db5750600395945050505050565b8060010161ffff168361ffff1611156114f557600661140f565b60049695505050505050565b60606113ad612642565b5f6111ba82612662565b61151d611dc5565b6115278383612674565b61153183826126ef565b505050565b5f611541838361252c565b9392505050565b5f61154133848460405180602001604052805f815250612597565b5f61157285610eff868661252c565b61158c85858560405180602001604052805f815250612597565b90505b949350505050565b5f61158c33868686868267ffffffffffffffff811115610f2657610f26613c20565b5f61158c85856040516020016115d0929190614862565b604051602081830303815290604052805190602001208484604051602001610ee49291906148a2565b5f61158c33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f806116498686868661276a565b61ffff165f8181526006602052604081208054939550919350909161166d906149c7565b91829055506001036116f5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c8f4a8936040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116de575f80fd5b505af11580156116f0573d5f803e3d5ffd5b505050505b6004545f81900361170757505061158f565b60035460408051808201825273ffffffffffffffffffffffffffffffffffffffff92831680825260208083018681525f8981526005909252939020915182547fffffffffffffffffffffffff00000000000000000000000000000000000000001694169390931781559051600190910155611784813330856129b1565b6117ba576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050949350505050565b5f610f5f87876040516020016117dc929190614862565b6040516020818303038152906040528051906020012086866040516020016118059291906148a2565b60405160208183030381529060405280519060200120611359868661232d565b5f60608082808083814630828060405190808252806020026020018201604052801561185b578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461188e90614811565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba90614811565b80156119055780601f106118dc57610100808354040283529160200191611905565b820191905f5260205f20905b8154815290600101906020018083116118e857829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f6119c06119a36113f18a8a60405160200161197a929190614862565b604051602081830303815290604052805190602001208989604051602001610ee49291906148a2565b898989898267ffffffffffffffff811115610f2657610f26613c20565b98975050505050505050565b5f610d59612230565b5f61158c85858585612a8f565b5f611a56611a486113f18c8c6040516020016119ff929190614862565b604051602081830303815290604052805190602001208b8b604051602001611a289291906148a2565b604051602081830303815290604052805190602001206113598b8b61232d565b8b8b8b8b6111d38b8d6148db565b9a9950505050505050505050565b611a6c611dc5565b611a7682826126ef565b5050565b5f8181526001602052604081205461ffff166112eb565b5f61158c835f81518110611aa757611aa761499a565b6020026020010151612662565b5f611ac587610eff88888888612a8f565b610f5f87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f818152600160205260408120805461ffff169182918190819081908190611b2d89611419565b600182810154600284015493549a9c999b5091999198929750630100000090910473ffffffffffffffffffffffffffffffffffffffff1695509350915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611bdc576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611be582612af9565b6040517f286b1d0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063286b1d0b906024015f604051808303815f87803b158015611c6b575f80fd5b505af1158015611c7d573d5f803e3d5ffd5b50505050611a7681612011565b5f6119c0611c9d6113f18a8a8a8a612a8f565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b611ce2611dc5565b611a768282612674565b60606040518060600160405280602f8152602001614ea6602f9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611da1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154191906149fe565b333014611dfe576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f90611541906080015b60405160208183030381529060405280519060200120612bb4565b5f611e68848484612c15565b90505f816005811115611e7d57611e7d6141aa565b03611e885750505050565b611e93848484612c4f565b15611e9e5750505050565b61117781612d97565b5f84808203611ee2576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611f25576040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161106c565b82518114611f6c5782516040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815261106c918391600401918252602082015260400190565b611f8d886001611f7a612230565b611f849190614978565b61ffff16611d0c565b91505f5b8181101561200557611ffd89848a8a85818110611fb057611fb061499a565b90506020020135898986818110611fc957611fc961499a565b9050602002016020810190611fde9190614a15565b888681518110611ff057611ff061499a565b6020026020010151612f5b565b600101611f91565b50509695505050505050565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b612057838383613215565b611531576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516001146120c8576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f815181106120f1576120f161499a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612146576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114612181576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f815181106121935761219361499a565b60200260200101515f146121d3576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160011461220e576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611531815f815181106122235761222361499a565b602002602001015161326d565b5f6113ad61346d565b5f3415612272576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f036122af576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff16106122fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301926122ed908590613495565b9050805f03611541576122af565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff81111561234957612349613c20565b604051908082528060200260200182016040528015612372578160200160208202803683370190505b5090505f5b828110156123de578585828181106123915761239161499a565b90506020028101906123a39190614a2e565b6040516123b1929190614a8f565b60405180910390208282815181106123cb576123cb61499a565b6020908102919091010152600101612377565b50806040516020016123f09190614a9e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f9061158f9060a001611e41565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f60405161248e9190614ad3565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f60026125016119cc565b61250b9190614bd5565b65ffffffffffff16600114612521576001612524565b60025b60ff16905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061154190608001611e41565b5f8061258186868686613604565b9250905061258e81612d97565b50949350505050565b5f806125a285611419565b905060018160078111156125b8576125b86141aa565b146125f157806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b5f858152600160205260409020546126339087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9182160116611d0c565b915061258e8683878787612f5b565b60606040518060a0016040528060658152602001614ed560659139905090565b5f6111ba8261266f613711565b613728565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610e6f565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610e6f565b5f8061277786868661208d565b61277f613711565b90506127a4845f815181106127965761279661499a565b602002602001015182613728565b5f8181526001602052604090205490925061ffff16156127f0576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61291482826040805160c08101825261ffff92831681525f602080830182815233848601908152606085018481526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561295357612953613c20565b60405190808252806020026020018201604052801561298657816020015b60608152602001906001900390816129715790505b508987808b6040516129a099989796959493929190614c6f565b60405180910390a194509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290525f9061158c9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261377b565b5f61158c7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b86868686604051612ac8929190614a8f565b604051908190038120611e4194939291602001938452602084019290925260ff166040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff8116612b46576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b5f612bbd61137d565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612c22858561382f565b90925090505f826005811115612c3a57612c3a6141aa565b14612c45578161140f565b61140f8682613873565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612c7c929190614d4b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e0000000000000000000000000000000000000000000000000000000017905251612cfd9190614d63565b5f60405180830381855afa9150503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5091509150818015612d4e57506020815110155b801561140f575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612d8c90830160209081019084016149fe565b149695505050505050565b5f816005811115612daa57612daa6141aa565b03612db25750565b6001816005811115612dc657612dc66141aa565b03612dfd576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612e1157612e116141aa565b03612e48576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612e5c57612e5c6141aa565b03612e93576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612ea757612ea76141aa565b03612ede576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612ef257612ef26141aa565b03612f29576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612f6584611419565b90506001816007811115612f7b57612f7b6141aa565b14612fb457806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b612fc186868686866138b6565b5f612fca612230565b61ffff81165f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff8d1684526007835281842094845293909152812080549394509192613019906149c7565b91829055501461302a57505061320e565b60405161ffff82169073ffffffffffffffffffffffffffffffffffffffff8916907faec1eae443fe2f674be7e8a9e6de65d4b90f5536050fe468320204a765012701905f90a36040517fc580b26900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c580b269906024015f604051808303815f87803b1580156130f6575f80fd5b505af1158015613108573d5f803e3d5ffd5b505050505f61312260018361311d9190614978565b613a68565b61314c887f0000000000000000000000000000000000000000000000000000000000000000614d7e565b6131569190614d95565b9050805f036131675750505061320e565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b1580156131f4575f80fd5b505af1158015613206573d5f803e3d5ffd5b505050505050505b5050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290525f9061158f9085907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612a0d565b5f61327782614da8565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a12000000000000000000000000000000000000000000000000000000001480156132cd5750604481145b15801561332857507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d8423000000000000000000000000000000000000000000000000000000001480156133265750604481145b155b801561338257507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c9587000000000000000000000000000000000000000000000000000000001480156133805750606481145b155b80156133dc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a00330000000000000000000000000000000000000000000000000000000001480156133da5750604481145b155b801561343657507fffffffff0000000000000000000000000000000000000000000000000000000082167f10bf5068000000000000000000000000000000000000000000000000000000001480156134345750602481145b155b15611531576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680613480636322c96242614df7565b61348a9190614d95565b6113ad906001614e0a565b5f6134a08383613728565b5f81815260016020526040902080549192509061ffff8481169116146134c9575f9150506111ba565b60046134d483611419565b60078111156134e5576134e56141aa565b146134f3575f9150506111ba565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906135509084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff168660405161357f9190614d63565b5f604051808303815f865af19150503d805f81146135b8576040519150601f19603f3d011682016040523d82523d5f602084013e6135bd565b606091505b5091509150816135fb57806040517f15fcd67500000000000000000000000000000000000000000000000000000000815260040161106c9190613b85565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156136395750600390505f613708565b8460ff16601b1415801561365157508460ff16601c14155b156136615750600490505f613708565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156136b1573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156136ff575f81613703565b60015f5b915091505b94509492505050565b5f61371a6124f6565b613722612230565b01905090565b5f82823060405160200161373e93929190614e1d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61379f57505f6111ba565b60608373ffffffffffffffffffffffffffffffffffffffff16836040516137c69190614d63565b5f604051808303815f865af19150503d805f81146137ff576040519150601f19603f3d011682016040523d82523d5f602084013e613804565b606091505b50909250905081801561158f57508051158061158f57508080602001905181019061158f9190614e5f565b5f8082516041146138455750600290505f61386c565b6020830151604084015160608501515f1a919061386487848484613604565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146138ae576005611541565b505f92915050565b835f036138ef576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615613958576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff1660018111156139c4576139c46141aa565b60018111156139d5576139d56141aa565b036139f6575f83815260016020819052604090912001805485019055613a0d565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda484848785604051613a599493929190614e7e565b60405180910390a25050505050565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015613af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba91906149fe565b5f5b83811015613b34578181015183820152602001613b1c565b50505f910152565b5f8151808452613b53816020860160208601613b1a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6115416020830184613b3c565b5f8060408385031215613ba8575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613bda575f80fd5b919050565b5f8083601f840112613bef575f80fd5b50813567ffffffffffffffff811115613c06575f80fd5b6020830191508360208260051b850101111561386c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613c9457613c94613c20565b604052919050565b5f82601f830112613cab575f80fd5b813567ffffffffffffffff811115613cc557613cc5613c20565b613cf660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c4d565b818152846020838601011115613d0a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613d3b575f80fd5b613d4487613bb7565b9550602087013567ffffffffffffffff80821115613d60575f80fd5b613d6c8a838b01613bdf565b90975095506040890135915080821115613d84575f80fd5b613d908a838b01613bdf565b90955093506060890135915080821115613da8575f80fd5b50613db589828a01613c9c565b9150509295509295509295565b5f60208284031215613dd2575f80fd5b5035919050565b5f8060408385031215613dea575f80fd5b613df383613bb7565b946020939093013593505050565b5f805f805f8060608789031215613e16575f80fd5b863567ffffffffffffffff80821115613e2d575f80fd5b613e398a838b01613bdf565b90985096506020890135915080821115613e51575f80fd5b613e5d8a838b01613bdf565b90965094506040890135915080821115613e75575f80fd5b50613e8289828a01613bdf565b979a9699509497509295939492505050565b5f67ffffffffffffffff821115613ead57613ead613c20565b5060051b60200190565b5f82601f830112613ec6575f80fd5b81356020613edb613ed683613e94565b613c4d565b8083825260208201915060208460051b870101935086841115613efc575f80fd5b602086015b84811015613f1f57613f1281613bb7565b8352918301918301613f01565b509695505050505050565b5f82601f830112613f39575f80fd5b81356020613f49613ed683613e94565b8083825260208201915060208460051b870101935086841115613f6a575f80fd5b602086015b84811015613f1f5780358352918301918301613f6f565b5f82601f830112613f95575f80fd5b81356020613fa5613ed683613e94565b82815260059290921b84018101918181019086841115613fc3575f80fd5b8286015b84811015613f1f57803567ffffffffffffffff811115613fe5575f80fd5b613ff38986838b0101613c9c565b845250918301918301613fc7565b5f805f8060808587031215614014575f80fd5b843567ffffffffffffffff8082111561402b575f80fd5b61403788838901613eb7565b9550602087013591508082111561404c575f80fd5b61405888838901613f2a565b9450604087013591508082111561406d575f80fd5b5061407a87828801613f86565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156140a2575f80fd5b6140ab89613bb7565b9750602089013567ffffffffffffffff808211156140c7575f80fd5b6140d38c838d01613bdf565b909950975060408b01359150808211156140eb575f80fd5b6140f78c838d01613bdf565b909750955060608b013591508082111561410f575f80fd5b61411b8c838d01613bdf565b909550935060808b0135915080821115614133575f80fd5b506141408b828c01613c9c565b9150509295985092959890939650565b803560ff81168114613bda575f80fd5b5f805f805f60a08688031215614174575f80fd5b8535945061418460208701614150565b935061419260408701614150565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061420c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b602081016111ba82846141d7565b5f806040838503121561422f575f80fd5b8235915061423f60208401613bb7565b90509250929050565b5f60208284031215614258575f80fd5b813567ffffffffffffffff81111561426e575f80fd5b61158f84828501613c9c565b5f805f6060848603121561428c575f80fd5b8335925061429c60208501613bb7565b91506142aa60408501613bb7565b90509250925092565b5f80604083850312156142c4575f80fd5b8235915061423f60208401614150565b5f805f80608085870312156142e7575f80fd5b6142f085613bb7565b93506020850135925061430560408601614150565b9150606085013567ffffffffffffffff811115614320575f80fd5b61432c87828801613c9c565b91505092959194509250565b5f805f806040858703121561434b575f80fd5b843567ffffffffffffffff80821115614362575f80fd5b61436e88838901613bdf565b90965094506020870135915080821115614386575f80fd5b5061439387828801613bdf565b95989497509550505050565b5f8083601f8401126143af575f80fd5b50813567ffffffffffffffff8111156143c6575f80fd5b60208301915083602082850101111561386c575f80fd5b5f805f80606085870312156143f0575f80fd5b8435935061440060208601614150565b9250604085013567ffffffffffffffff81111561441b575f80fd5b6143938782880161439f565b5f805f806080858703121561443a575f80fd5b843567ffffffffffffffff80821115614451575f80fd5b61445d88838901613eb7565b95506020870135915080821115614472575f80fd5b61447e88838901613f2a565b94506040870135915080821115614493575f80fd5b61449f88838901613f86565b935060608701359150808211156144b4575f80fd5b5061432c87828801613c9c565b5f815180845260208085019450602084015f5b838110156144f0578151875295820195908201906001016144d4565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61453560e0830189613b3c565b82810360408401526145478189613b3c565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152611a5681856144c1565b5f805f805f805f60a0888a031215614599575f80fd5b873567ffffffffffffffff808211156145b0575f80fd5b6145bc8b838c01613bdf565b909950975060208a01359150808211156145d4575f80fd5b506145e18a828b01613bdf565b90965094506145f4905060408901614150565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215614628575f80fd5b893567ffffffffffffffff8082111561463f575f80fd5b61464b8d838e01613bdf565b909b50995060208c0135915080821115614663575f80fd5b61466f8d838e01613bdf565b909950975060408c0135915080821115614687575f80fd5b506146948c828d01613bdf565b90965094506146a7905060608b01614150565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a087890312156146d9575f80fd5b6146e287613bb7565b9550602087013594506146f760408801614150565b9350606087013567ffffffffffffffff80821115614713575f80fd5b61471f8a838b0161439f565b90955093506080890135915080821115613da8575f80fd5b65ffffffffffff88811682528716602082015260e0810161475b60408301886141d7565b85606083015284608083015273ffffffffffffffffffffffffffffffffffffffff841660a08301528260c083015298975050505050505050565b5f805f805f805f60c0888a0312156147ab575f80fd5b873596506147bb60208901614150565b9550604088013567ffffffffffffffff8111156147d6575f80fd5b6147e28a828b0161439f565b90965094506147f5905060608901614150565b92506080880135915060a0880135905092959891949750929550565b600181811c9082168061482557607f821691505b60208210810361485c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561488f575f80fd5b8260051b80858437919091019392505050565b5f8184825b858110156148d05760ff6148ba83614150565b16835260209283019291909101906001016148a7565b509095945050505050565b5f6148e8613ed684613e94565b80848252602080830192508560051b850136811115614905575f80fd5b855b8181101561493f57803567ffffffffffffffff811115614925575f80fd5b61493136828a01613c9c565b865250938201938201614907565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8281168282160390808211156149935761499361494b565b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149f7576149f761494b565b5060010190565b5f60208284031215614a0e575f80fd5b5051919050565b5f60208284031215614a25575f80fd5b61154182614150565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a61575f80fd5b83018035915067ffffffffffffffff821115614a7b575f80fd5b60200191503681900382131561386c575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b83811015614ac757815185529382019390820190600101614aab565b50929695505050505050565b5f8083545f60018260011c91506001831680614af057607f831692505b60208084108203614b28577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b3c5760018114614b6f57614b9a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b9a565b5f8a8152602090205f5b86811015614b925781548b820152908501908301614b79565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f65ffffffffffff80841680614bed57614bed614ba8565b92169190910692915050565b5f8282518085526020808601955060208260051b840101602086015f5b84811015614c62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614c50838351613b3c565b98840198925090830190600101614c16565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b81811015614cd3578451831686529483019493830193600101614cb5565b50505050508281036060840152614cea818a6144c1565b90508281036080840152614cfe8189614bf9565b905082810360a0840152614d128188614bf9565b61ffff871660c0850152905061ffff851660e0840152828103610100840152614d3b8185613b3c565b9c9b505050505050505050505050565b828152604060208201525f61158f6040830184613b3c565b5f8251614d74818460208701613b1a565b9190910192915050565b80820281158282048414176111ba576111ba61494b565b5f82614da357614da3614ba8565b500490565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015614def5780818460040360031b1b83161693505b505050919050565b818103818111156111ba576111ba61494b565b808201808211156111ba576111ba61494b565b606081525f614e2f6060830186613b3c565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b5f60208284031215614e6f575f80fd5b81518015158114611541575f80fd5b84815260ff84166020820152826040820152608060608201525f61140f6080830184613b3c56fe737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d6d616a6f726974796d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220a1bb3b8691c7c2f14f610be838b7528c14a92ee0c97983a0315bed8a877e964964736f6c63430008170033" } +{ "bytecode": "0x6101a060405234801562000011575f80fd5b50604051620055dc380380620055dc83398101604081905262000034916200031e565b60408051808201909152601081526f29ba30b73230b93223b7bb32b93737b960811b602082015289815f6200006a82826200045f565b504660805262000079620001ba565b60a052506001600160a01b03811660c0819052620000aa576040516316d3e4a360e01b815260040160405180910390fd5b50506001600160a01b03881660e0819052620000d9576040516338a401b960e21b815260040160405180910390fd5b6001600160a01b038716610140819052620001075760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038516610100819052620001355760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0384166101208190526200016357604051630306120160e01b815260040160405180910390fd5b6001600160a01b0383166101608190526200019157604051631fb9659f60e21b815260040160405180910390fd5b6200019c8662000256565b620001a782620002c7565b6101805250620005a59650505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001ee91906200052b565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381166200027e57604051634e71231360e11b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b80516001600160a01b038116811462000319575f80fd5b919050565b5f805f805f805f805f6101208a8c03121562000338575f80fd5b620003438a62000302565b98506200035360208b0162000302565b97506200036360408b0162000302565b96506200037360608b0162000302565b95506200038360808b0162000302565b94506200039360a08b0162000302565b9350620003a360c08b0162000302565b925060e08a015191506101008a015190509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003ea57607f821691505b6020821081036200040957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045a57805f5260205f20601f840160051c81016020851015620004365750805b601f840160051c820191505b8181101562000457575f815560010162000442565b50505b505050565b81516001600160401b038111156200047b576200047b620003c1565b62000493816200048c8454620003d5565b846200040f565b602080601f831160018114620004c9575f8415620004b15750858301515b5f19600386901b1c1916600185901b17855562000523565b5f85815260208120601f198616915b82811015620004f957888601518255948401946001909101908401620004d8565b50858210156200051757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f8083546200053a81620003d5565b600182811680156200055557600181146200056b5762000599565b60ff198416875282151583028701945062000599565b875f526020805f205f5b85811015620005905781548a82015290840190820162000575565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051610140516101605161018051614f6f6200066d5f395f818161090b015261312801525f8181610c9c01526131b301525f81816109a30152611b8501525f8181610d02015261115201525f818161059701528181610e2f015281816126c0015261273b01525f8181610ccf0152610f8d01525f81816104d101528181610d320152818161167b01528181611c2a01528181611d5a015281816130b50152613a9c01525f6113b501525f6113800152614f6f5ff3fe6080604052600436106103a8575f3560e01c80637d5e81e2116101e9578063c27cabb511610108578063dd4e2ba51161009d578063f294bd921161006d578063f294bd9214610c8b578063f52c93c514610cbe578063fbfa77cf14610cf1578063fc0c546a14610d24575f80fd5b8063dd4e2ba514610bf2578063deaaa7cc14610c06578063eb9019d414610c39578063f046c64614610c58575f80fd5b8063c9167e6c116100d8578063c9167e6c14610b62578063cee8770814610b81578063d11d19c214610ba0578063d48d842314610bd3575f80fd5b8063c27cabb514610add578063c59057e414610af2578063c64d2ee614610b11578063c7f758a814610b30575f80fd5b80638e9d8c341161017e578063a72246871161014e578063a722468714610a61578063b4d87a1214610a8d578063b58131b014610aac578063c01f9e3714610abe575f80fd5b80638e9d8c34146109c557806391ddadf4146109f857806396ccd67314610a235780639b9e9cf814610a42575f80fd5b8063849a83b4116101b9578063849a83b41461092d57806384b0196e1461094c5780638968eb07146109735780638df3227f14610992575f80fd5b80637d5e81e21461083a5780637fcfb164146108595780638233c0a71461088457806383c6a8d3146108fa575f80fd5b80633644e515116102d5578063544ffc9c1161026a57806364a38bf91161023a57806364a38bf9146107a757806370edcbc4146107c657806375691bff146107e55780637b3c71d31461081b575f80fd5b8063544ffc9c146106f557806355a73c531461074a57806356781388146107695780635b18c26a14610788575f80fd5b806343859632116102a5578063438596321461066a5780634bf5d7e9146106a35780634d8e0825146106b7578063519c9587146106d6575f80fd5b80633644e515146105f75780633932abb11461060b5780633bccf4fd1461061f5780633e4f49e61461063e575f80fd5b80631703a0181161034b5780632656227d1161031b5780632656227d146105735780632b20e397146105865780632d63f693146105b957806330717129146105d8575f80fd5b80631703a018146104f3578063189abd1914610506578063230bcb371461052557806324b2c7b314610554575f80fd5b80630dd320e9116103865780630dd320e91461041557806310bf506814610434578063143489d014610453578063160d66ae146104c0575f80fd5b806302a251a3146103ac57806306fdde03146103d357806307a00330146103f4575b5f80fd5b3480156103b7575f80fd5b506103c0610d56565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610d62565b6040516103ca9190613b85565b3480156103ff575f80fd5b5061041361040e366004613b97565b610df1565b005b348015610420575f80fd5b506103c061042f366004613d26565b610ea0565b34801561043f575f80fd5b5061041361044e366004613dc2565b610f6a565b34801561045e575f80fd5b5061049b61046d366004613dc2565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ca565b3480156104cb575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104fe575f80fd5b5060016103c0565b348015610511575f80fd5b50610413610520366004613dc2565b610ff3565b348015610530575f80fd5b5061054461053f366004613dd9565b61117d565b60405190151581526020016103ca565b34801561055f575f80fd5b506103c061056e366004613e01565b6111c0565b6103c0610581366004614001565b6111d8565b348015610591575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c4575f80fd5b506103c06105d3366004613dc2565b6112cd565b3480156105e3575f80fd5b506103c06105f236600461408b565b6112f5565b348015610602575f80fd5b506103c061137d565b348015610616575f80fd5b506103c06113d7565b34801561062a575f80fd5b506103c0610639366004614160565b6113e0565b348015610649575f80fd5b5061065d610658366004613dc2565b611419565b6040516103ca9190614210565b348015610675575f80fd5b5061054461068436600461421e565b600260209081525f928352604080842090915290825290205460ff1681565b3480156106ae575f80fd5b506103e7611501565b3480156106c2575f80fd5b506103c06106d1366004614248565b61150b565b3480156106e1575f80fd5b506104136106f036600461427a565b611515565b348015610700575f80fd5b5061072f61070f366004613dc2565b5f8181526001602081905260408220908101546002909101549093909250565b604080519384526020840192909252908201526060016103ca565b348015610755575f80fd5b506103c06107643660046142b3565b611536565b348015610774575f80fd5b506103c06107833660046142b3565b611548565b348015610793575f80fd5b506103c06107a23660046142d4565b611563565b3480156107b2575f80fd5b506103c06107c1366004614338565b611597565b3480156107d1575f80fd5b506103c06107e0366004614338565b6115b9565b3480156107f0575f80fd5b506103c06107ff366004613dd9565b600760209081525f928352604080842090915290825290205481565b348015610826575f80fd5b506103c06108353660046143dd565b6115f9565b348015610845575f80fd5b506103c0610854366004614427565b61163b565b348015610864575f80fd5b506103c0610873366004613dc2565b60066020525f908152604090205481565b34801561088f575f80fd5b506108ce61089e366004613dc2565b5f908152600560205260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016103ca565b348015610905575f80fd5b506103c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610938575f80fd5b506103c0610947366004613e01565b6117c5565b348015610957575f80fd5b50610960611825565b6040516103ca97969594939291906144fb565b34801561097e575f80fd5b506103c061098d366004614583565b61195d565b34801561099d575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d0575f80fd5b506103c07fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610a03575f80fd5b50610a0c6119cc565b60405165ffffffffffff90911681526020016103ca565b348015610a2e575f80fd5b506103c0610a3d3660046143dd565b6119d5565b348015610a4d575f80fd5b506103c0610a5c366004614610565b6119e2565b348015610a6c575f80fd5b5060035461049b9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a98575f80fd5b50610413610aa736600461421e565b611a64565b348015610ab7575f80fd5b505f6103c0565b348015610ac9575f80fd5b506103c0610ad8366004613dc2565b611a7a565b348015610ae8575f80fd5b506103c060045481565b348015610afd575f80fd5b506103c0610b0c366004614001565b611a91565b348015610b1c575f80fd5b506103c0610b2b3660046146c4565b611ab4565b348015610b3b575f80fd5b50610b4f610b4a366004613dc2565b611b06565b6040516103ca9796959493929190614737565b348015610b6d575f80fd5b50610413610b7c366004613dd9565b611b6d565b348015610b8c575f80fd5b506103c0610b9b366004614795565b611c8a565b348015610bab575f80fd5b506103c07f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610bde575f80fd5b50610413610bed36600461421e565b611cda565b348015610bfd575f80fd5b506103e7611cec565b348015610c11575f80fd5b506103c07f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c44575f80fd5b506103c0610c53366004613dd9565b611d0c565b348015610c63575f80fd5b506103c07f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610c96575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cc9575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cfc575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610d2f575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061049b565b5f805b61ffff16905090565b60605f8054610d7090614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9c90614811565b8015610de75780601f10610dbe57610100808354040283529160200191610de7565b820191905f5260205f20905b815481529060010190602001808311610dca57829003601f168201915b5050505050905090565b610df9611dc5565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610e86575f80fd5b505af1158015610e98573d5f803e3d5ffd5b505050505050565b5f610f0587610eff8888604051602001610ebb929190614862565b604051602081830303815290604052805190602001208787604051602001610ee49291906148a2565b60405160208183030381529060405280519060200120611e00565b84611e5c565b610f5f87878787878267ffffffffffffffff811115610f2657610f26613c20565b604051908082528060200260200182016040528015610f5957816020015b6060815260200190600190039081610f445790505b50611ea7565b979650505050505050565b333014801590610fb057503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15610fe7576040517fec4acc1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff081612011565b50565b5f610ffd82611419565b90506006816007811115611013576110136141aa565b1415801561103357506003816007811115611030576110306141aa565b14155b1561107557806040517f3c726c1700000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b60405180910390fd5b5f82815260056020526040812060010154908190036110c0576040517f2c66d4a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260056020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556001909101939093555183815273ffffffffffffffffffffffffffffffffffffffff90921691829186917f847147bb46f853e52eedf4997e56154050d17c103e1bfe61a185f02a7b6b66c0910160405180910390a3611177817f00000000000000000000000000000000000000000000000000000000000000008461204c565b50505050565b5f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff861684526007835281842085855290925290912054145b92915050565b5f610f5f33888888886111d3888a6148db565b611ea7565b5f6111e485858561208d565b5f60016111ef612230565b6111f99190614978565b905061121f845f815181106112105761121061499a565b60200260200101518283612239565b5f81815260056020526040902060018101548154929450909173ffffffffffffffffffffffffffffffffffffffff1681156112c1575f85815260056020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560019081018490559091529020546112c19082906301000000900473ffffffffffffffffffffffffffffffffffffffff168461204c565b50505050949350505050565b5f8181526001602081905260408220546112eb919061ffff16614978565b61ffff1692915050565b5f61135e89610eff8a8a604051602001611310929190614862565b6040516020818303038152906040528051906020012089896040516020016113399291906148a2565b60405160208183030381529060405280519060200120611359898961232d565b612410565b61137089898989896111d3898b6148db565b9998505050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146113b2576113ad61245c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f610d596124f6565b5f61140f6113f96113f1888861252c565b868686612573565b878760405180602001604052805f815250612597565b9695505050505050565b5f818152600160205260408120805462010000900460ff161561143f5750600792915050565b5f611448612230565b825490915061ffff165f81900361148b576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061ffff168261ffff1610156114a557505f949350505050565b8061ffff808216908416036114c05750600195945050505050565b83600101548460020154116114db5750600395945050505050565b8060010161ffff168361ffff1611156114f557600661140f565b60049695505050505050565b60606113ad612642565b5f6111ba82612662565b61151d611dc5565b6115278383612674565b61153183826126ef565b505050565b5f611541838361252c565b9392505050565b5f61154133848460405180602001604052805f815250612597565b5f61157285610eff868661252c565b61158c85858560405180602001604052805f815250612597565b90505b949350505050565b5f61158c33868686868267ffffffffffffffff811115610f2657610f26613c20565b5f61158c85856040516020016115d0929190614862565b604051602081830303815290604052805190602001208484604051602001610ee49291906148a2565b5f61158c33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f806116498686868661276a565b61ffff165f8181526006602052604081208054939550919350909161166d906149c7565b91829055506001036116f5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c8f4a8936040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116de575f80fd5b505af11580156116f0573d5f803e3d5ffd5b505050505b6004545f81900361170757505061158f565b60035460408051808201825273ffffffffffffffffffffffffffffffffffffffff92831680825260208083018681525f8981526005909252939020915182547fffffffffffffffffffffffff00000000000000000000000000000000000000001694169390931781559051600190910155611784813330856129b1565b6117ba576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050949350505050565b5f610f5f87876040516020016117dc929190614862565b6040516020818303038152906040528051906020012086866040516020016118059291906148a2565b60405160208183030381529060405280519060200120611359868661232d565b5f60608082808083814630828060405190808252806020026020018201604052801561185b578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461188e90614811565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba90614811565b80156119055780601f106118dc57610100808354040283529160200191611905565b820191905f5260205f20905b8154815290600101906020018083116118e857829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f6119c06119a36113f18a8a60405160200161197a929190614862565b604051602081830303815290604052805190602001208989604051602001610ee49291906148a2565b898989898267ffffffffffffffff811115610f2657610f26613c20565b98975050505050505050565b5f610d59612230565b5f61158c85858585612a8f565b5f611a56611a486113f18c8c6040516020016119ff929190614862565b604051602081830303815290604052805190602001208b8b604051602001611a289291906148a2565b604051602081830303815290604052805190602001206113598b8b61232d565b8b8b8b8b6111d38b8d6148db565b9a9950505050505050505050565b611a6c611dc5565b611a7682826126ef565b5050565b5f8181526001602052604081205461ffff166112eb565b5f61158c835f81518110611aa757611aa761499a565b6020026020010151612662565b5f611ac587610eff88888888612a8f565b610f5f87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f818152600160205260408120805461ffff169182918190819081908190611b2d89611419565b600182810154600284015493549a9c999b5091999198929750630100000090910473ffffffffffffffffffffffffffffffffffffffff1695509350915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611bdc576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611be582612af9565b6040517f286b1d0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063286b1d0b906024015f604051808303815f87803b158015611c6b575f80fd5b505af1158015611c7d573d5f803e3d5ffd5b50505050611a7681612011565b5f6119c0611c9d6113f18a8a8a8a612a8f565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b611ce2611dc5565b611a768282612674565b60606040518060600160405280602f8152602001614f0b602f9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611da1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154191906149fe565b333014611dfe576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f90611541906080015b60405160208183030381529060405280519060200120612bb4565b5f611e68848484612c15565b90505f816005811115611e7d57611e7d6141aa565b03611e885750505050565b611e93848484612c4f565b15611e9e5750505050565b61117781612d97565b5f84808203611ee2576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611f25576040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161106c565b82518114611f6c5782516040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815261106c918391600401918252602082015260400190565b611f8d886001611f7a612230565b611f849190614978565b61ffff16611d0c565b91505f5b8181101561200557611ffd89848a8a85818110611fb057611fb061499a565b90506020020135898986818110611fc957611fc961499a565b9050602002016020810190611fde9190614a15565b888681518110611ff057611ff061499a565b6020026020010151612f5b565b600101611f91565b50509695505050505050565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b612057838383613215565b611531576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516001146120c8576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f815181106120f1576120f161499a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612146576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114612181576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f815181106121935761219361499a565b60200260200101515f146121d3576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160011461220e576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611531815f815181106122235761222361499a565b602002602001015161326d565b5f6113ad61346d565b5f3415612272576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f036122af576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff16106122fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301926122ed908590613495565b9050805f03611541576122af565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff81111561234957612349613c20565b604051908082528060200260200182016040528015612372578160200160208202803683370190505b5090505f5b828110156123de578585828181106123915761239161499a565b90506020028101906123a39190614a2e565b6040516123b1929190614a8f565b60405180910390208282815181106123cb576123cb61499a565b6020908102919091010152600101612377565b50806040516020016123f09190614a9e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f9061158f9060a001611e41565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f60405161248e9190614ad3565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f60026125016119cc565b61250b9190614bd5565b65ffffffffffff16600114612521576001612524565b60025b60ff16905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061154190608001611e41565b5f8061258186868686613604565b9250905061258e81612d97565b50949350505050565b5f806125a285611419565b905060018160078111156125b8576125b86141aa565b146125f157806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b5f858152600160205260409020546126339087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9182160116611d0c565b915061258e8683878787612f5b565b60606040518060a0016040528060658152602001614ea660659139905090565b5f6111ba8261266f613711565b613728565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610e6f565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610e6f565b5f8061277786868661208d565b61277f613711565b90506127a4845f815181106127965761279661499a565b602002602001015182613728565b5f8181526001602052604090205490925061ffff16156127f0576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61291482826040805160c08101825261ffff92831681525f602080830182815233848601908152606085018481526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561295357612953613c20565b60405190808252806020026020018201604052801561298657816020015b60608152602001906001900390816129715790505b508987808b6040516129a099989796959493929190614c6f565b60405180910390a194509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290525f9061158c9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261377b565b5f61158c7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b86868686604051612ac8929190614a8f565b604051908190038120611e4194939291602001938452602084019290925260ff166040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff8116612b46576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b5f612bbd61137d565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612c22858561382f565b90925090505f826005811115612c3a57612c3a6141aa565b14612c45578161140f565b61140f8682613873565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612c7c929190614d4b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e0000000000000000000000000000000000000000000000000000000017905251612cfd9190614d63565b5f60405180830381855afa9150503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5091509150818015612d4e57506020815110155b801561140f575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612d8c90830160209081019084016149fe565b149695505050505050565b5f816005811115612daa57612daa6141aa565b03612db25750565b6001816005811115612dc657612dc66141aa565b03612dfd576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612e1157612e116141aa565b03612e48576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612e5c57612e5c6141aa565b03612e93576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612ea757612ea76141aa565b03612ede576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612ef257612ef26141aa565b03612f29576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612f6584611419565b90506001816007811115612f7b57612f7b6141aa565b14612fb457806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b612fc186868686866138b6565b5f612fca612230565b61ffff81165f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff8d1684526007835281842094845293909152812080549394509192613019906149c7565b91829055501461302a57505061320e565b60405161ffff82169073ffffffffffffffffffffffffffffffffffffffff8916907faec1eae443fe2f674be7e8a9e6de65d4b90f5536050fe468320204a765012701905f90a36040517fc580b26900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c580b269906024015f604051808303815f87803b1580156130f6575f80fd5b505af1158015613108573d5f803e3d5ffd5b505050505f61312260018361311d9190614978565b613a68565b61314c887f0000000000000000000000000000000000000000000000000000000000000000614d7e565b6131569190614d95565b9050805f036131675750505061320e565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b1580156131f4575f80fd5b505af1158015613206573d5f803e3d5ffd5b505050505050505b5050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290525f9061158f9085907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612a0d565b5f61327782614da8565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a12000000000000000000000000000000000000000000000000000000001480156132cd5750604481145b15801561332857507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d8423000000000000000000000000000000000000000000000000000000001480156133265750604481145b155b801561338257507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c9587000000000000000000000000000000000000000000000000000000001480156133805750606481145b155b80156133dc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a00330000000000000000000000000000000000000000000000000000000001480156133da5750604481145b155b801561343657507fffffffff0000000000000000000000000000000000000000000000000000000082167f10bf5068000000000000000000000000000000000000000000000000000000001480156134345750602481145b155b15611531576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c68061348063661bd35042614df7565b61348a9190614d95565b6113ad906001614e0a565b5f6134a08383613728565b5f81815260016020526040902080549192509061ffff8481169116146134c9575f9150506111ba565b60046134d483611419565b60078111156134e5576134e56141aa565b146134f3575f9150506111ba565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906135509084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff168660405161357f9190614d63565b5f604051808303815f865af19150503d805f81146135b8576040519150601f19603f3d011682016040523d82523d5f602084013e6135bd565b606091505b5091509150816135fb57806040517f15fcd67500000000000000000000000000000000000000000000000000000000815260040161106c9190613b85565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156136395750600390505f613708565b8460ff16601b1415801561365157508460ff16601c14155b156136615750600490505f613708565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156136b1573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156136ff575f81613703565b60015f5b915091505b94509492505050565b5f61371a6124f6565b613722612230565b01905090565b5f82823060405160200161373e93929190614e1d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61379f57505f6111ba565b60608373ffffffffffffffffffffffffffffffffffffffff16836040516137c69190614d63565b5f604051808303815f865af19150503d805f81146137ff576040519150601f19603f3d011682016040523d82523d5f602084013e613804565b606091505b50909250905081801561158f57508051158061158f57508080602001905181019061158f9190614e5f565b5f8082516041146138455750600290505f61386c565b6020830151604084015160608501515f1a919061386487848484613604565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146138ae576005611541565b505f92915050565b835f036138ef576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615613958576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff1660018111156139c4576139c46141aa565b60018111156139d5576139d56141aa565b036139f6575f83815260016020819052604090912001805485019055613a0d565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda484848785604051613a599493929190614e7e565b60405180910390a25050505050565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015613af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba91906149fe565b5f5b83811015613b34578181015183820152602001613b1c565b50505f910152565b5f8151808452613b53816020860160208601613b1a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6115416020830184613b3c565b5f8060408385031215613ba8575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613bda575f80fd5b919050565b5f8083601f840112613bef575f80fd5b50813567ffffffffffffffff811115613c06575f80fd5b6020830191508360208260051b850101111561386c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613c9457613c94613c20565b604052919050565b5f82601f830112613cab575f80fd5b813567ffffffffffffffff811115613cc557613cc5613c20565b613cf660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c4d565b818152846020838601011115613d0a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613d3b575f80fd5b613d4487613bb7565b9550602087013567ffffffffffffffff80821115613d60575f80fd5b613d6c8a838b01613bdf565b90975095506040890135915080821115613d84575f80fd5b613d908a838b01613bdf565b90955093506060890135915080821115613da8575f80fd5b50613db589828a01613c9c565b9150509295509295509295565b5f60208284031215613dd2575f80fd5b5035919050565b5f8060408385031215613dea575f80fd5b613df383613bb7565b946020939093013593505050565b5f805f805f8060608789031215613e16575f80fd5b863567ffffffffffffffff80821115613e2d575f80fd5b613e398a838b01613bdf565b90985096506020890135915080821115613e51575f80fd5b613e5d8a838b01613bdf565b90965094506040890135915080821115613e75575f80fd5b50613e8289828a01613bdf565b979a9699509497509295939492505050565b5f67ffffffffffffffff821115613ead57613ead613c20565b5060051b60200190565b5f82601f830112613ec6575f80fd5b81356020613edb613ed683613e94565b613c4d565b8083825260208201915060208460051b870101935086841115613efc575f80fd5b602086015b84811015613f1f57613f1281613bb7565b8352918301918301613f01565b509695505050505050565b5f82601f830112613f39575f80fd5b81356020613f49613ed683613e94565b8083825260208201915060208460051b870101935086841115613f6a575f80fd5b602086015b84811015613f1f5780358352918301918301613f6f565b5f82601f830112613f95575f80fd5b81356020613fa5613ed683613e94565b82815260059290921b84018101918181019086841115613fc3575f80fd5b8286015b84811015613f1f57803567ffffffffffffffff811115613fe5575f80fd5b613ff38986838b0101613c9c565b845250918301918301613fc7565b5f805f8060808587031215614014575f80fd5b843567ffffffffffffffff8082111561402b575f80fd5b61403788838901613eb7565b9550602087013591508082111561404c575f80fd5b61405888838901613f2a565b9450604087013591508082111561406d575f80fd5b5061407a87828801613f86565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156140a2575f80fd5b6140ab89613bb7565b9750602089013567ffffffffffffffff808211156140c7575f80fd5b6140d38c838d01613bdf565b909950975060408b01359150808211156140eb575f80fd5b6140f78c838d01613bdf565b909750955060608b013591508082111561410f575f80fd5b61411b8c838d01613bdf565b909550935060808b0135915080821115614133575f80fd5b506141408b828c01613c9c565b9150509295985092959890939650565b803560ff81168114613bda575f80fd5b5f805f805f60a08688031215614174575f80fd5b8535945061418460208701614150565b935061419260408701614150565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061420c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b602081016111ba82846141d7565b5f806040838503121561422f575f80fd5b8235915061423f60208401613bb7565b90509250929050565b5f60208284031215614258575f80fd5b813567ffffffffffffffff81111561426e575f80fd5b61158f84828501613c9c565b5f805f6060848603121561428c575f80fd5b8335925061429c60208501613bb7565b91506142aa60408501613bb7565b90509250925092565b5f80604083850312156142c4575f80fd5b8235915061423f60208401614150565b5f805f80608085870312156142e7575f80fd5b6142f085613bb7565b93506020850135925061430560408601614150565b9150606085013567ffffffffffffffff811115614320575f80fd5b61432c87828801613c9c565b91505092959194509250565b5f805f806040858703121561434b575f80fd5b843567ffffffffffffffff80821115614362575f80fd5b61436e88838901613bdf565b90965094506020870135915080821115614386575f80fd5b5061439387828801613bdf565b95989497509550505050565b5f8083601f8401126143af575f80fd5b50813567ffffffffffffffff8111156143c6575f80fd5b60208301915083602082850101111561386c575f80fd5b5f805f80606085870312156143f0575f80fd5b8435935061440060208601614150565b9250604085013567ffffffffffffffff81111561441b575f80fd5b6143938782880161439f565b5f805f806080858703121561443a575f80fd5b843567ffffffffffffffff80821115614451575f80fd5b61445d88838901613eb7565b95506020870135915080821115614472575f80fd5b61447e88838901613f2a565b94506040870135915080821115614493575f80fd5b61449f88838901613f86565b935060608701359150808211156144b4575f80fd5b5061432c87828801613c9c565b5f815180845260208085019450602084015f5b838110156144f0578151875295820195908201906001016144d4565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61453560e0830189613b3c565b82810360408401526145478189613b3c565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152611a5681856144c1565b5f805f805f805f60a0888a031215614599575f80fd5b873567ffffffffffffffff808211156145b0575f80fd5b6145bc8b838c01613bdf565b909950975060208a01359150808211156145d4575f80fd5b506145e18a828b01613bdf565b90965094506145f4905060408901614150565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215614628575f80fd5b893567ffffffffffffffff8082111561463f575f80fd5b61464b8d838e01613bdf565b909b50995060208c0135915080821115614663575f80fd5b61466f8d838e01613bdf565b909950975060408c0135915080821115614687575f80fd5b506146948c828d01613bdf565b90965094506146a7905060608b01614150565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a087890312156146d9575f80fd5b6146e287613bb7565b9550602087013594506146f760408801614150565b9350606087013567ffffffffffffffff80821115614713575f80fd5b61471f8a838b0161439f565b90955093506080890135915080821115613da8575f80fd5b65ffffffffffff88811682528716602082015260e0810161475b60408301886141d7565b85606083015284608083015273ffffffffffffffffffffffffffffffffffffffff841660a08301528260c083015298975050505050505050565b5f805f805f805f60c0888a0312156147ab575f80fd5b873596506147bb60208901614150565b9550604088013567ffffffffffffffff8111156147d6575f80fd5b6147e28a828b0161439f565b90965094506147f5905060608901614150565b92506080880135915060a0880135905092959891949750929550565b600181811c9082168061482557607f821691505b60208210810361485c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561488f575f80fd5b8260051b80858437919091019392505050565b5f8184825b858110156148d05760ff6148ba83614150565b16835260209283019291909101906001016148a7565b509095945050505050565b5f6148e8613ed684613e94565b80848252602080830192508560051b850136811115614905575f80fd5b855b8181101561493f57803567ffffffffffffffff811115614925575f80fd5b61493136828a01613c9c565b865250938201938201614907565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8281168282160390808211156149935761499361494b565b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149f7576149f761494b565b5060010190565b5f60208284031215614a0e575f80fd5b5051919050565b5f60208284031215614a25575f80fd5b61154182614150565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a61575f80fd5b83018035915067ffffffffffffffff821115614a7b575f80fd5b60200191503681900382131561386c575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b83811015614ac757815185529382019390820190600101614aab565b50929695505050505050565b5f8083545f60018260011c91506001831680614af057607f831692505b60208084108203614b28577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b3c5760018114614b6f57614b9a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b9a565b5f8a8152602090205f5b86811015614b925781548b820152908501908301614b79565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f65ffffffffffff80841680614bed57614bed614ba8565b92169190910692915050565b5f8282518085526020808601955060208260051b840101602086015f5b84811015614c62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614c50838351613b3c565b98840198925090830190600101614c16565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b81811015614cd3578451831686529483019493830193600101614cb5565b50505050508281036060840152614cea818a6144c1565b90508281036080840152614cfe8189614bf9565b905082810360a0840152614d128188614bf9565b61ffff871660c0850152905061ffff851660e0840152828103610100840152614d3b8185613b3c565b9c9b505050505050505050505050565b828152604060208201525f61158f6040830184613b3c565b5f8251614d74818460208701613b1a565b9190910192915050565b80820281158282048414176111ba576111ba61494b565b5f82614da357614da3614ba8565b500490565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015614def5780818460040360031b1b83161693505b505050919050565b818103818111156111ba576111ba61494b565b808201808211156111ba576111ba61494b565b606081525f614e2f6060830186613b3c565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b5f60208284031215614e6f575f80fd5b81518015158114611541575f80fd5b84815260ff84166020820152826040820152608060608201525f61140f6080830184613b3c56fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d6d616a6f72697479a2646970667358221220910b9b15080ecc4ba50adffad5058892763d9688bf7f05fbda99784b46bbf72a64736f6c63430008170033" } diff --git a/modules/m-core/bytecode/StandardGovernorDeployer.json b/modules/m-core/bytecode/StandardGovernorDeployer.json index a000370b..d2b66f6d 100644 --- a/modules/m-core/bytecode/StandardGovernorDeployer.json +++ b/modules/m-core/bytecode/StandardGovernorDeployer.json @@ -1 +1 @@ -{ "bytecode": "0x610100604052348015610010575f80fd5b50604051620061123803806200611283398101604081905261003191610105565b6001600160a01b03841660c081905261005d5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03831660808190526100895760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03821660a08190526100b557604051630306120160e01b815260040160405180910390fd5b6001600160a01b03811660e08190526100e157604051631fb9659f60e21b815260040160405180910390fd5b50505050610156565b80516001600160a01b0381168114610100575f80fd5b919050565b5f805f8060808587031215610118575f80fd5b610121856100ea565b935061012f602086016100ea565b925061013d604086016100ea565b915061014b606086016100ea565b905092959194509250565b60805160a05160c05160e051615f66620001ac5f395f818161016e01526102b701525f818161012d015281816101e8015261025301525f8181610196015261029601525f8181609a01526102750152615f665ff3fe608060405234801562000010575f80fd5b506004361062000090575f3560e01c80638df3227f116200005f5780638df3227f1462000127578063affed0e0146200014f578063f294bd921462000168578063fbfa77cf1462000190575f80fd5b80632b20e3971462000094578063585e78af14620000e6578063777f14d914620001065780638489e1791462000110575b5f80fd5b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b5f54620000bc9073ffffffffffffffffffffffffffffffffffffffff1681565b620000bc620001b8565b620000bc62000121366004620008fc565b620001cf565b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b6200015960015481565b604051908152602001620000dd565b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f620001ca30600154600101620003a8565b905090565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000240576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f81546001019190508190555085857f0000000000000000000000000000000000000000000000000000000000000000867f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008989604051620002e690620008c5565b73ffffffffffffffffffffffffffffffffffffffff998a1681529789166020890152958816604088015293871660608701529186166080860152851660a085015290931660c083015260e082019290925261010081019190915261012001604051809103905ff0801580156200035e573d5f803e3d5ffd5b505f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790559695505050505050565b5f81156200080257607f821115620007525760ff8211156200067c5761ffff821115620005a65762ffffff821115620004c1576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b604051602081830303815290604052620008b6565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a01604051602081830303815290604052620008b6565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b166037820152603901620004ac565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166037820152603801620004ac565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166036820152603701620004ac565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b80516020909101209392505050565b6155dc806200095583390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620008f7575f80fd5b919050565b5f805f805f60a0868803121562000911575f80fd5b6200091c86620008d3565b94506200092c60208701620008d3565b93506200093c60408701620008d3565b9497939650939460608101359450608001359291505056fe6101a060405234801562000011575f80fd5b50604051620055dc380380620055dc83398101604081905262000034916200031e565b60408051808201909152601081526f29ba30b73230b93223b7bb32b93737b960811b602082015289815f6200006a82826200045f565b504660805262000079620001ba565b60a052506001600160a01b03811660c0819052620000aa576040516316d3e4a360e01b815260040160405180910390fd5b50506001600160a01b03881660e0819052620000d9576040516338a401b960e21b815260040160405180910390fd5b6001600160a01b038716610140819052620001075760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038516610100819052620001355760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0384166101208190526200016357604051630306120160e01b815260040160405180910390fd5b6001600160a01b0383166101608190526200019157604051631fb9659f60e21b815260040160405180910390fd5b6200019c8662000256565b620001a782620002c7565b6101805250620005a59650505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001ee91906200052b565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381166200027e57604051634e71231360e11b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b80516001600160a01b038116811462000319575f80fd5b919050565b5f805f805f805f805f6101208a8c03121562000338575f80fd5b620003438a62000302565b98506200035360208b0162000302565b97506200036360408b0162000302565b96506200037360608b0162000302565b95506200038360808b0162000302565b94506200039360a08b0162000302565b9350620003a360c08b0162000302565b925060e08a015191506101008a015190509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003ea57607f821691505b6020821081036200040957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045a57805f5260205f20601f840160051c81016020851015620004365750805b601f840160051c820191505b8181101562000457575f815560010162000442565b50505b505050565b81516001600160401b038111156200047b576200047b620003c1565b62000493816200048c8454620003d5565b846200040f565b602080601f831160018114620004c9575f8415620004b15750858301515b5f19600386901b1c1916600185901b17855562000523565b5f85815260208120601f198616915b82811015620004f957888601518255948401946001909101908401620004d8565b50858210156200051757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f8083546200053a81620003d5565b600182811680156200055557600181146200056b5762000599565b60ff198416875282151583028701945062000599565b875f526020805f205f5b85811015620005905781548a82015290840190820162000575565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051610140516101605161018051614f6f6200066d5f395f818161090b015261312801525f8181610c9c01526131b301525f81816109a30152611b8501525f8181610d02015261115201525f818161059701528181610e2f015281816126c0015261273b01525f8181610ccf0152610f8d01525f81816104d101528181610d320152818161167b01528181611c2a01528181611d5a015281816130b50152613a9c01525f6113b501525f6113800152614f6f5ff3fe6080604052600436106103a8575f3560e01c80637d5e81e2116101e9578063c27cabb511610108578063dd4e2ba51161009d578063f294bd921161006d578063f294bd9214610c8b578063f52c93c514610cbe578063fbfa77cf14610cf1578063fc0c546a14610d24575f80fd5b8063dd4e2ba514610bf2578063deaaa7cc14610c06578063eb9019d414610c39578063f046c64614610c58575f80fd5b8063c9167e6c116100d8578063c9167e6c14610b62578063cee8770814610b81578063d11d19c214610ba0578063d48d842314610bd3575f80fd5b8063c27cabb514610add578063c59057e414610af2578063c64d2ee614610b11578063c7f758a814610b30575f80fd5b80638e9d8c341161017e578063a72246871161014e578063a722468714610a61578063b4d87a1214610a8d578063b58131b014610aac578063c01f9e3714610abe575f80fd5b80638e9d8c34146109c557806391ddadf4146109f857806396ccd67314610a235780639b9e9cf814610a42575f80fd5b8063849a83b4116101b9578063849a83b41461092d57806384b0196e1461094c5780638968eb07146109735780638df3227f14610992575f80fd5b80637d5e81e21461083a5780637fcfb164146108595780638233c0a71461088457806383c6a8d3146108fa575f80fd5b80633644e515116102d5578063544ffc9c1161026a57806364a38bf91161023a57806364a38bf9146107a757806370edcbc4146107c657806375691bff146107e55780637b3c71d31461081b575f80fd5b8063544ffc9c146106f557806355a73c531461074a57806356781388146107695780635b18c26a14610788575f80fd5b806343859632116102a5578063438596321461066a5780634bf5d7e9146106a35780634d8e0825146106b7578063519c9587146106d6575f80fd5b80633644e515146105f75780633932abb11461060b5780633bccf4fd1461061f5780633e4f49e61461063e575f80fd5b80631703a0181161034b5780632656227d1161031b5780632656227d146105735780632b20e397146105865780632d63f693146105b957806330717129146105d8575f80fd5b80631703a018146104f3578063189abd1914610506578063230bcb371461052557806324b2c7b314610554575f80fd5b80630dd320e9116103865780630dd320e91461041557806310bf506814610434578063143489d014610453578063160d66ae146104c0575f80fd5b806302a251a3146103ac57806306fdde03146103d357806307a00330146103f4575b5f80fd5b3480156103b7575f80fd5b506103c0610d56565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610d62565b6040516103ca9190613b85565b3480156103ff575f80fd5b5061041361040e366004613b97565b610df1565b005b348015610420575f80fd5b506103c061042f366004613d26565b610ea0565b34801561043f575f80fd5b5061041361044e366004613dc2565b610f6a565b34801561045e575f80fd5b5061049b61046d366004613dc2565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ca565b3480156104cb575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104fe575f80fd5b5060016103c0565b348015610511575f80fd5b50610413610520366004613dc2565b610ff3565b348015610530575f80fd5b5061054461053f366004613dd9565b61117d565b60405190151581526020016103ca565b34801561055f575f80fd5b506103c061056e366004613e01565b6111c0565b6103c0610581366004614001565b6111d8565b348015610591575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c4575f80fd5b506103c06105d3366004613dc2565b6112cd565b3480156105e3575f80fd5b506103c06105f236600461408b565b6112f5565b348015610602575f80fd5b506103c061137d565b348015610616575f80fd5b506103c06113d7565b34801561062a575f80fd5b506103c0610639366004614160565b6113e0565b348015610649575f80fd5b5061065d610658366004613dc2565b611419565b6040516103ca9190614210565b348015610675575f80fd5b5061054461068436600461421e565b600260209081525f928352604080842090915290825290205460ff1681565b3480156106ae575f80fd5b506103e7611501565b3480156106c2575f80fd5b506103c06106d1366004614248565b61150b565b3480156106e1575f80fd5b506104136106f036600461427a565b611515565b348015610700575f80fd5b5061072f61070f366004613dc2565b5f8181526001602081905260408220908101546002909101549093909250565b604080519384526020840192909252908201526060016103ca565b348015610755575f80fd5b506103c06107643660046142b3565b611536565b348015610774575f80fd5b506103c06107833660046142b3565b611548565b348015610793575f80fd5b506103c06107a23660046142d4565b611563565b3480156107b2575f80fd5b506103c06107c1366004614338565b611597565b3480156107d1575f80fd5b506103c06107e0366004614338565b6115b9565b3480156107f0575f80fd5b506103c06107ff366004613dd9565b600760209081525f928352604080842090915290825290205481565b348015610826575f80fd5b506103c06108353660046143dd565b6115f9565b348015610845575f80fd5b506103c0610854366004614427565b61163b565b348015610864575f80fd5b506103c0610873366004613dc2565b60066020525f908152604090205481565b34801561088f575f80fd5b506108ce61089e366004613dc2565b5f908152600560205260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016103ca565b348015610905575f80fd5b506103c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610938575f80fd5b506103c0610947366004613e01565b6117c5565b348015610957575f80fd5b50610960611825565b6040516103ca97969594939291906144fb565b34801561097e575f80fd5b506103c061098d366004614583565b61195d565b34801561099d575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d0575f80fd5b506103c07fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610a03575f80fd5b50610a0c6119cc565b60405165ffffffffffff90911681526020016103ca565b348015610a2e575f80fd5b506103c0610a3d3660046143dd565b6119d5565b348015610a4d575f80fd5b506103c0610a5c366004614610565b6119e2565b348015610a6c575f80fd5b5060035461049b9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a98575f80fd5b50610413610aa736600461421e565b611a64565b348015610ab7575f80fd5b505f6103c0565b348015610ac9575f80fd5b506103c0610ad8366004613dc2565b611a7a565b348015610ae8575f80fd5b506103c060045481565b348015610afd575f80fd5b506103c0610b0c366004614001565b611a91565b348015610b1c575f80fd5b506103c0610b2b3660046146c4565b611ab4565b348015610b3b575f80fd5b50610b4f610b4a366004613dc2565b611b06565b6040516103ca9796959493929190614737565b348015610b6d575f80fd5b50610413610b7c366004613dd9565b611b6d565b348015610b8c575f80fd5b506103c0610b9b366004614795565b611c8a565b348015610bab575f80fd5b506103c07f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610bde575f80fd5b50610413610bed36600461421e565b611cda565b348015610bfd575f80fd5b506103e7611cec565b348015610c11575f80fd5b506103c07f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c44575f80fd5b506103c0610c53366004613dd9565b611d0c565b348015610c63575f80fd5b506103c07f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610c96575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cc9575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cfc575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610d2f575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061049b565b5f805b61ffff16905090565b60605f8054610d7090614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9c90614811565b8015610de75780601f10610dbe57610100808354040283529160200191610de7565b820191905f5260205f20905b815481529060010190602001808311610dca57829003601f168201915b5050505050905090565b610df9611dc5565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610e86575f80fd5b505af1158015610e98573d5f803e3d5ffd5b505050505050565b5f610f0587610eff8888604051602001610ebb929190614862565b604051602081830303815290604052805190602001208787604051602001610ee49291906148a2565b60405160208183030381529060405280519060200120611e00565b84611e5c565b610f5f87878787878267ffffffffffffffff811115610f2657610f26613c20565b604051908082528060200260200182016040528015610f5957816020015b6060815260200190600190039081610f445790505b50611ea7565b979650505050505050565b333014801590610fb057503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15610fe7576040517fec4acc1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff081612011565b50565b5f610ffd82611419565b90506006816007811115611013576110136141aa565b1415801561103357506003816007811115611030576110306141aa565b14155b1561107557806040517f3c726c1700000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b60405180910390fd5b5f82815260056020526040812060010154908190036110c0576040517f2c66d4a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260056020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556001909101939093555183815273ffffffffffffffffffffffffffffffffffffffff90921691829186917f847147bb46f853e52eedf4997e56154050d17c103e1bfe61a185f02a7b6b66c0910160405180910390a3611177817f00000000000000000000000000000000000000000000000000000000000000008461204c565b50505050565b5f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff861684526007835281842085855290925290912054145b92915050565b5f610f5f33888888886111d3888a6148db565b611ea7565b5f6111e485858561208d565b5f60016111ef612230565b6111f99190614978565b905061121f845f815181106112105761121061499a565b60200260200101518283612239565b5f81815260056020526040902060018101548154929450909173ffffffffffffffffffffffffffffffffffffffff1681156112c1575f85815260056020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560019081018490559091529020546112c19082906301000000900473ffffffffffffffffffffffffffffffffffffffff168461204c565b50505050949350505050565b5f8181526001602081905260408220546112eb919061ffff16614978565b61ffff1692915050565b5f61135e89610eff8a8a604051602001611310929190614862565b6040516020818303038152906040528051906020012089896040516020016113399291906148a2565b60405160208183030381529060405280519060200120611359898961232d565b612410565b61137089898989896111d3898b6148db565b9998505050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146113b2576113ad61245c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f610d596124f6565b5f61140f6113f96113f1888861252c565b868686612573565b878760405180602001604052805f815250612597565b9695505050505050565b5f818152600160205260408120805462010000900460ff161561143f5750600792915050565b5f611448612230565b825490915061ffff165f81900361148b576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061ffff168261ffff1610156114a557505f949350505050565b8061ffff808216908416036114c05750600195945050505050565b83600101548460020154116114db5750600395945050505050565b8060010161ffff168361ffff1611156114f557600661140f565b60049695505050505050565b60606113ad612642565b5f6111ba82612662565b61151d611dc5565b6115278383612674565b61153183826126ef565b505050565b5f611541838361252c565b9392505050565b5f61154133848460405180602001604052805f815250612597565b5f61157285610eff868661252c565b61158c85858560405180602001604052805f815250612597565b90505b949350505050565b5f61158c33868686868267ffffffffffffffff811115610f2657610f26613c20565b5f61158c85856040516020016115d0929190614862565b604051602081830303815290604052805190602001208484604051602001610ee49291906148a2565b5f61158c33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f806116498686868661276a565b61ffff165f8181526006602052604081208054939550919350909161166d906149c7565b91829055506001036116f5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c8f4a8936040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116de575f80fd5b505af11580156116f0573d5f803e3d5ffd5b505050505b6004545f81900361170757505061158f565b60035460408051808201825273ffffffffffffffffffffffffffffffffffffffff92831680825260208083018681525f8981526005909252939020915182547fffffffffffffffffffffffff00000000000000000000000000000000000000001694169390931781559051600190910155611784813330856129b1565b6117ba576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050949350505050565b5f610f5f87876040516020016117dc929190614862565b6040516020818303038152906040528051906020012086866040516020016118059291906148a2565b60405160208183030381529060405280519060200120611359868661232d565b5f60608082808083814630828060405190808252806020026020018201604052801561185b578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461188e90614811565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba90614811565b80156119055780601f106118dc57610100808354040283529160200191611905565b820191905f5260205f20905b8154815290600101906020018083116118e857829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f6119c06119a36113f18a8a60405160200161197a929190614862565b604051602081830303815290604052805190602001208989604051602001610ee49291906148a2565b898989898267ffffffffffffffff811115610f2657610f26613c20565b98975050505050505050565b5f610d59612230565b5f61158c85858585612a8f565b5f611a56611a486113f18c8c6040516020016119ff929190614862565b604051602081830303815290604052805190602001208b8b604051602001611a289291906148a2565b604051602081830303815290604052805190602001206113598b8b61232d565b8b8b8b8b6111d38b8d6148db565b9a9950505050505050505050565b611a6c611dc5565b611a7682826126ef565b5050565b5f8181526001602052604081205461ffff166112eb565b5f61158c835f81518110611aa757611aa761499a565b6020026020010151612662565b5f611ac587610eff88888888612a8f565b610f5f87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f818152600160205260408120805461ffff169182918190819081908190611b2d89611419565b600182810154600284015493549a9c999b5091999198929750630100000090910473ffffffffffffffffffffffffffffffffffffffff1695509350915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611bdc576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611be582612af9565b6040517f286b1d0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063286b1d0b906024015f604051808303815f87803b158015611c6b575f80fd5b505af1158015611c7d573d5f803e3d5ffd5b50505050611a7681612011565b5f6119c0611c9d6113f18a8a8a8a612a8f565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b611ce2611dc5565b611a768282612674565b60606040518060600160405280602f8152602001614ea6602f9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611da1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154191906149fe565b333014611dfe576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f90611541906080015b60405160208183030381529060405280519060200120612bb4565b5f611e68848484612c15565b90505f816005811115611e7d57611e7d6141aa565b03611e885750505050565b611e93848484612c4f565b15611e9e5750505050565b61117781612d97565b5f84808203611ee2576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611f25576040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161106c565b82518114611f6c5782516040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815261106c918391600401918252602082015260400190565b611f8d886001611f7a612230565b611f849190614978565b61ffff16611d0c565b91505f5b8181101561200557611ffd89848a8a85818110611fb057611fb061499a565b90506020020135898986818110611fc957611fc961499a565b9050602002016020810190611fde9190614a15565b888681518110611ff057611ff061499a565b6020026020010151612f5b565b600101611f91565b50509695505050505050565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b612057838383613215565b611531576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516001146120c8576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f815181106120f1576120f161499a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612146576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114612181576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f815181106121935761219361499a565b60200260200101515f146121d3576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160011461220e576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611531815f815181106122235761222361499a565b602002602001015161326d565b5f6113ad61346d565b5f3415612272576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f036122af576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff16106122fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301926122ed908590613495565b9050805f03611541576122af565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff81111561234957612349613c20565b604051908082528060200260200182016040528015612372578160200160208202803683370190505b5090505f5b828110156123de578585828181106123915761239161499a565b90506020028101906123a39190614a2e565b6040516123b1929190614a8f565b60405180910390208282815181106123cb576123cb61499a565b6020908102919091010152600101612377565b50806040516020016123f09190614a9e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f9061158f9060a001611e41565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f60405161248e9190614ad3565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f60026125016119cc565b61250b9190614bd5565b65ffffffffffff16600114612521576001612524565b60025b60ff16905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061154190608001611e41565b5f8061258186868686613604565b9250905061258e81612d97565b50949350505050565b5f806125a285611419565b905060018160078111156125b8576125b86141aa565b146125f157806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b5f858152600160205260409020546126339087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9182160116611d0c565b915061258e8683878787612f5b565b60606040518060a0016040528060658152602001614ed560659139905090565b5f6111ba8261266f613711565b613728565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610e6f565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610e6f565b5f8061277786868661208d565b61277f613711565b90506127a4845f815181106127965761279661499a565b602002602001015182613728565b5f8181526001602052604090205490925061ffff16156127f0576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61291482826040805160c08101825261ffff92831681525f602080830182815233848601908152606085018481526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561295357612953613c20565b60405190808252806020026020018201604052801561298657816020015b60608152602001906001900390816129715790505b508987808b6040516129a099989796959493929190614c6f565b60405180910390a194509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290525f9061158c9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261377b565b5f61158c7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b86868686604051612ac8929190614a8f565b604051908190038120611e4194939291602001938452602084019290925260ff166040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff8116612b46576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b5f612bbd61137d565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612c22858561382f565b90925090505f826005811115612c3a57612c3a6141aa565b14612c45578161140f565b61140f8682613873565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612c7c929190614d4b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e0000000000000000000000000000000000000000000000000000000017905251612cfd9190614d63565b5f60405180830381855afa9150503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5091509150818015612d4e57506020815110155b801561140f575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612d8c90830160209081019084016149fe565b149695505050505050565b5f816005811115612daa57612daa6141aa565b03612db25750565b6001816005811115612dc657612dc66141aa565b03612dfd576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612e1157612e116141aa565b03612e48576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612e5c57612e5c6141aa565b03612e93576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612ea757612ea76141aa565b03612ede576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612ef257612ef26141aa565b03612f29576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612f6584611419565b90506001816007811115612f7b57612f7b6141aa565b14612fb457806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b612fc186868686866138b6565b5f612fca612230565b61ffff81165f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff8d1684526007835281842094845293909152812080549394509192613019906149c7565b91829055501461302a57505061320e565b60405161ffff82169073ffffffffffffffffffffffffffffffffffffffff8916907faec1eae443fe2f674be7e8a9e6de65d4b90f5536050fe468320204a765012701905f90a36040517fc580b26900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c580b269906024015f604051808303815f87803b1580156130f6575f80fd5b505af1158015613108573d5f803e3d5ffd5b505050505f61312260018361311d9190614978565b613a68565b61314c887f0000000000000000000000000000000000000000000000000000000000000000614d7e565b6131569190614d95565b9050805f036131675750505061320e565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b1580156131f4575f80fd5b505af1158015613206573d5f803e3d5ffd5b505050505050505b5050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290525f9061158f9085907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612a0d565b5f61327782614da8565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a12000000000000000000000000000000000000000000000000000000001480156132cd5750604481145b15801561332857507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d8423000000000000000000000000000000000000000000000000000000001480156133265750604481145b155b801561338257507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c9587000000000000000000000000000000000000000000000000000000001480156133805750606481145b155b80156133dc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a00330000000000000000000000000000000000000000000000000000000001480156133da5750604481145b155b801561343657507fffffffff0000000000000000000000000000000000000000000000000000000082167f10bf5068000000000000000000000000000000000000000000000000000000001480156134345750602481145b155b15611531576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680613480636322c96242614df7565b61348a9190614d95565b6113ad906001614e0a565b5f6134a08383613728565b5f81815260016020526040902080549192509061ffff8481169116146134c9575f9150506111ba565b60046134d483611419565b60078111156134e5576134e56141aa565b146134f3575f9150506111ba565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906135509084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff168660405161357f9190614d63565b5f604051808303815f865af19150503d805f81146135b8576040519150601f19603f3d011682016040523d82523d5f602084013e6135bd565b606091505b5091509150816135fb57806040517f15fcd67500000000000000000000000000000000000000000000000000000000815260040161106c9190613b85565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156136395750600390505f613708565b8460ff16601b1415801561365157508460ff16601c14155b156136615750600490505f613708565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156136b1573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156136ff575f81613703565b60015f5b915091505b94509492505050565b5f61371a6124f6565b613722612230565b01905090565b5f82823060405160200161373e93929190614e1d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61379f57505f6111ba565b60608373ffffffffffffffffffffffffffffffffffffffff16836040516137c69190614d63565b5f604051808303815f865af19150503d805f81146137ff576040519150601f19603f3d011682016040523d82523d5f602084013e613804565b606091505b50909250905081801561158f57508051158061158f57508080602001905181019061158f9190614e5f565b5f8082516041146138455750600290505f61386c565b6020830151604084015160608501515f1a919061386487848484613604565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146138ae576005611541565b505f92915050565b835f036138ef576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615613958576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff1660018111156139c4576139c46141aa565b60018111156139d5576139d56141aa565b036139f6575f83815260016020819052604090912001805485019055613a0d565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda484848785604051613a599493929190614e7e565b60405180910390a25050505050565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015613af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba91906149fe565b5f5b83811015613b34578181015183820152602001613b1c565b50505f910152565b5f8151808452613b53816020860160208601613b1a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6115416020830184613b3c565b5f8060408385031215613ba8575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613bda575f80fd5b919050565b5f8083601f840112613bef575f80fd5b50813567ffffffffffffffff811115613c06575f80fd5b6020830191508360208260051b850101111561386c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613c9457613c94613c20565b604052919050565b5f82601f830112613cab575f80fd5b813567ffffffffffffffff811115613cc557613cc5613c20565b613cf660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c4d565b818152846020838601011115613d0a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613d3b575f80fd5b613d4487613bb7565b9550602087013567ffffffffffffffff80821115613d60575f80fd5b613d6c8a838b01613bdf565b90975095506040890135915080821115613d84575f80fd5b613d908a838b01613bdf565b90955093506060890135915080821115613da8575f80fd5b50613db589828a01613c9c565b9150509295509295509295565b5f60208284031215613dd2575f80fd5b5035919050565b5f8060408385031215613dea575f80fd5b613df383613bb7565b946020939093013593505050565b5f805f805f8060608789031215613e16575f80fd5b863567ffffffffffffffff80821115613e2d575f80fd5b613e398a838b01613bdf565b90985096506020890135915080821115613e51575f80fd5b613e5d8a838b01613bdf565b90965094506040890135915080821115613e75575f80fd5b50613e8289828a01613bdf565b979a9699509497509295939492505050565b5f67ffffffffffffffff821115613ead57613ead613c20565b5060051b60200190565b5f82601f830112613ec6575f80fd5b81356020613edb613ed683613e94565b613c4d565b8083825260208201915060208460051b870101935086841115613efc575f80fd5b602086015b84811015613f1f57613f1281613bb7565b8352918301918301613f01565b509695505050505050565b5f82601f830112613f39575f80fd5b81356020613f49613ed683613e94565b8083825260208201915060208460051b870101935086841115613f6a575f80fd5b602086015b84811015613f1f5780358352918301918301613f6f565b5f82601f830112613f95575f80fd5b81356020613fa5613ed683613e94565b82815260059290921b84018101918181019086841115613fc3575f80fd5b8286015b84811015613f1f57803567ffffffffffffffff811115613fe5575f80fd5b613ff38986838b0101613c9c565b845250918301918301613fc7565b5f805f8060808587031215614014575f80fd5b843567ffffffffffffffff8082111561402b575f80fd5b61403788838901613eb7565b9550602087013591508082111561404c575f80fd5b61405888838901613f2a565b9450604087013591508082111561406d575f80fd5b5061407a87828801613f86565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156140a2575f80fd5b6140ab89613bb7565b9750602089013567ffffffffffffffff808211156140c7575f80fd5b6140d38c838d01613bdf565b909950975060408b01359150808211156140eb575f80fd5b6140f78c838d01613bdf565b909750955060608b013591508082111561410f575f80fd5b61411b8c838d01613bdf565b909550935060808b0135915080821115614133575f80fd5b506141408b828c01613c9c565b9150509295985092959890939650565b803560ff81168114613bda575f80fd5b5f805f805f60a08688031215614174575f80fd5b8535945061418460208701614150565b935061419260408701614150565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061420c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b602081016111ba82846141d7565b5f806040838503121561422f575f80fd5b8235915061423f60208401613bb7565b90509250929050565b5f60208284031215614258575f80fd5b813567ffffffffffffffff81111561426e575f80fd5b61158f84828501613c9c565b5f805f6060848603121561428c575f80fd5b8335925061429c60208501613bb7565b91506142aa60408501613bb7565b90509250925092565b5f80604083850312156142c4575f80fd5b8235915061423f60208401614150565b5f805f80608085870312156142e7575f80fd5b6142f085613bb7565b93506020850135925061430560408601614150565b9150606085013567ffffffffffffffff811115614320575f80fd5b61432c87828801613c9c565b91505092959194509250565b5f805f806040858703121561434b575f80fd5b843567ffffffffffffffff80821115614362575f80fd5b61436e88838901613bdf565b90965094506020870135915080821115614386575f80fd5b5061439387828801613bdf565b95989497509550505050565b5f8083601f8401126143af575f80fd5b50813567ffffffffffffffff8111156143c6575f80fd5b60208301915083602082850101111561386c575f80fd5b5f805f80606085870312156143f0575f80fd5b8435935061440060208601614150565b9250604085013567ffffffffffffffff81111561441b575f80fd5b6143938782880161439f565b5f805f806080858703121561443a575f80fd5b843567ffffffffffffffff80821115614451575f80fd5b61445d88838901613eb7565b95506020870135915080821115614472575f80fd5b61447e88838901613f2a565b94506040870135915080821115614493575f80fd5b61449f88838901613f86565b935060608701359150808211156144b4575f80fd5b5061432c87828801613c9c565b5f815180845260208085019450602084015f5b838110156144f0578151875295820195908201906001016144d4565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61453560e0830189613b3c565b82810360408401526145478189613b3c565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152611a5681856144c1565b5f805f805f805f60a0888a031215614599575f80fd5b873567ffffffffffffffff808211156145b0575f80fd5b6145bc8b838c01613bdf565b909950975060208a01359150808211156145d4575f80fd5b506145e18a828b01613bdf565b90965094506145f4905060408901614150565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215614628575f80fd5b893567ffffffffffffffff8082111561463f575f80fd5b61464b8d838e01613bdf565b909b50995060208c0135915080821115614663575f80fd5b61466f8d838e01613bdf565b909950975060408c0135915080821115614687575f80fd5b506146948c828d01613bdf565b90965094506146a7905060608b01614150565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a087890312156146d9575f80fd5b6146e287613bb7565b9550602087013594506146f760408801614150565b9350606087013567ffffffffffffffff80821115614713575f80fd5b61471f8a838b0161439f565b90955093506080890135915080821115613da8575f80fd5b65ffffffffffff88811682528716602082015260e0810161475b60408301886141d7565b85606083015284608083015273ffffffffffffffffffffffffffffffffffffffff841660a08301528260c083015298975050505050505050565b5f805f805f805f60c0888a0312156147ab575f80fd5b873596506147bb60208901614150565b9550604088013567ffffffffffffffff8111156147d6575f80fd5b6147e28a828b0161439f565b90965094506147f5905060608901614150565b92506080880135915060a0880135905092959891949750929550565b600181811c9082168061482557607f821691505b60208210810361485c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561488f575f80fd5b8260051b80858437919091019392505050565b5f8184825b858110156148d05760ff6148ba83614150565b16835260209283019291909101906001016148a7565b509095945050505050565b5f6148e8613ed684613e94565b80848252602080830192508560051b850136811115614905575f80fd5b855b8181101561493f57803567ffffffffffffffff811115614925575f80fd5b61493136828a01613c9c565b865250938201938201614907565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8281168282160390808211156149935761499361494b565b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149f7576149f761494b565b5060010190565b5f60208284031215614a0e575f80fd5b5051919050565b5f60208284031215614a25575f80fd5b61154182614150565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a61575f80fd5b83018035915067ffffffffffffffff821115614a7b575f80fd5b60200191503681900382131561386c575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b83811015614ac757815185529382019390820190600101614aab565b50929695505050505050565b5f8083545f60018260011c91506001831680614af057607f831692505b60208084108203614b28577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b3c5760018114614b6f57614b9a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b9a565b5f8a8152602090205f5b86811015614b925781548b820152908501908301614b79565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f65ffffffffffff80841680614bed57614bed614ba8565b92169190910692915050565b5f8282518085526020808601955060208260051b840101602086015f5b84811015614c62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614c50838351613b3c565b98840198925090830190600101614c16565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b81811015614cd3578451831686529483019493830193600101614cb5565b50505050508281036060840152614cea818a6144c1565b90508281036080840152614cfe8189614bf9565b905082810360a0840152614d128188614bf9565b61ffff871660c0850152905061ffff851660e0840152828103610100840152614d3b8185613b3c565b9c9b505050505050505050505050565b828152604060208201525f61158f6040830184613b3c565b5f8251614d74818460208701613b1a565b9190910192915050565b80820281158282048414176111ba576111ba61494b565b5f82614da357614da3614ba8565b500490565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015614def5780818460040360031b1b83161693505b505050919050565b818103818111156111ba576111ba61494b565b808201808211156111ba576111ba61494b565b606081525f614e2f6060830186613b3c565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b5f60208284031215614e6f575f80fd5b81518015158114611541575f80fd5b84815260ff84166020820152826040820152608060608201525f61140f6080830184613b3c56fe737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d6d616a6f726974796d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220a1bb3b8691c7c2f14f610be838b7528c14a92ee0c97983a0315bed8a877e964964736f6c63430008170033a26469706673582212206624f6d100b60d2af5d4931362e6478ab72bac900e9246524a931d9cff28a73e64736f6c63430008170033" } +{ "bytecode": "0x610100604052348015610010575f80fd5b50604051620061123803806200611283398101604081905261003191610105565b6001600160a01b03841660c081905261005d5760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b03831660808190526100895760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b03821660a08190526100b557604051630306120160e01b815260040160405180910390fd5b6001600160a01b03811660e08190526100e157604051631fb9659f60e21b815260040160405180910390fd5b50505050610156565b80516001600160a01b0381168114610100575f80fd5b919050565b5f805f8060808587031215610118575f80fd5b610121856100ea565b935061012f602086016100ea565b925061013d604086016100ea565b915061014b606086016100ea565b905092959194509250565b60805160a05160c05160e051615f66620001ac5f395f818161016e01526102b701525f818161012d015281816101e8015261025301525f8181610196015261029601525f8181609a01526102750152615f665ff3fe608060405234801562000010575f80fd5b506004361062000090575f3560e01c80638df3227f116200005f5780638df3227f1462000127578063affed0e0146200014f578063f294bd921462000168578063fbfa77cf1462000190575f80fd5b80632b20e3971462000094578063585e78af14620000e6578063777f14d914620001065780638489e1791462000110575b5f80fd5b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b5f54620000bc9073ffffffffffffffffffffffffffffffffffffffff1681565b620000bc620001b8565b620000bc62000121366004620008fc565b620001cf565b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b6200015960015481565b604051908152602001620000dd565b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b620000bc7f000000000000000000000000000000000000000000000000000000000000000081565b5f620001ca30600154600101620003a8565b905090565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000240576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f81546001019190508190555085857f0000000000000000000000000000000000000000000000000000000000000000867f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008989604051620002e690620008c5565b73ffffffffffffffffffffffffffffffffffffffff998a1681529789166020890152958816604088015293871660608701529186166080860152851660a085015290931660c083015260e082019290925261010081019190915261012001604051809103905ff0801580156200035e573d5f803e3d5ffd5b505f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790559695505050505050565b5f81156200080257607f821115620007525760ff8211156200067c5761ffff821115620005a65762ffffff821115620004c1576040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e084901b166037820152603b015b604051602081830303815290604052620008b6565b6040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e884901b166037820152603a01604051602081830303815290604052620008b6565b6040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f084901b166037820152603901620004ac565b6040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166037820152603801620004ac565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b16602282015260f883901b7fff00000000000000000000000000000000000000000000000000000000000000166036820152603701620004ac565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037016040516020818303038152906040525b80516020909101209392505050565b6155dc806200095583390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620008f7575f80fd5b919050565b5f805f805f60a0868803121562000911575f80fd5b6200091c86620008d3565b94506200092c60208701620008d3565b93506200093c60408701620008d3565b9497939650939460608101359450608001359291505056fe6101a060405234801562000011575f80fd5b50604051620055dc380380620055dc83398101604081905262000034916200031e565b60408051808201909152601081526f29ba30b73230b93223b7bb32b93737b960811b602082015289815f6200006a82826200045f565b504660805262000079620001ba565b60a052506001600160a01b03811660c0819052620000aa576040516316d3e4a360e01b815260040160405180910390fd5b50506001600160a01b03881660e0819052620000d9576040516338a401b960e21b815260040160405180910390fd5b6001600160a01b038716610140819052620001075760405163dfac64ef60e01b815260040160405180910390fd5b6001600160a01b038516610100819052620001355760405163a8a93d6960e01b815260040160405180910390fd5b6001600160a01b0384166101208190526200016357604051630306120160e01b815260040160405180910390fd5b6001600160a01b0383166101608190526200019157604051631fb9659f60e21b815260040160405180910390fd5b6200019c8662000256565b620001a782620002c7565b6101805250620005a59650505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001ee91906200052b565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381166200027e57604051634e71231360e11b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b80516001600160a01b038116811462000319575f80fd5b919050565b5f805f805f805f805f6101208a8c03121562000338575f80fd5b620003438a62000302565b98506200035360208b0162000302565b97506200036360408b0162000302565b96506200037360608b0162000302565b95506200038360808b0162000302565b94506200039360a08b0162000302565b9350620003a360c08b0162000302565b925060e08a015191506101008a015190509295985092959850929598565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003ea57607f821691505b6020821081036200040957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045a57805f5260205f20601f840160051c81016020851015620004365750805b601f840160051c820191505b8181101562000457575f815560010162000442565b50505b505050565b81516001600160401b038111156200047b576200047b620003c1565b62000493816200048c8454620003d5565b846200040f565b602080601f831160018114620004c9575f8415620004b15750858301515b5f19600386901b1c1916600185901b17855562000523565b5f85815260208120601f198616915b82811015620004f957888601518255948401946001909101908401620004d8565b50858210156200051757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f8083546200053a81620003d5565b600182811680156200055557600181146200056b5762000599565b60ff198416875282151583028701945062000599565b875f526020805f205f5b85811015620005905781548a82015290840190820162000575565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051610140516101605161018051614f6f6200066d5f395f818161090b015261312801525f8181610c9c01526131b301525f81816109a30152611b8501525f8181610d02015261115201525f818161059701528181610e2f015281816126c0015261273b01525f8181610ccf0152610f8d01525f81816104d101528181610d320152818161167b01528181611c2a01528181611d5a015281816130b50152613a9c01525f6113b501525f6113800152614f6f5ff3fe6080604052600436106103a8575f3560e01c80637d5e81e2116101e9578063c27cabb511610108578063dd4e2ba51161009d578063f294bd921161006d578063f294bd9214610c8b578063f52c93c514610cbe578063fbfa77cf14610cf1578063fc0c546a14610d24575f80fd5b8063dd4e2ba514610bf2578063deaaa7cc14610c06578063eb9019d414610c39578063f046c64614610c58575f80fd5b8063c9167e6c116100d8578063c9167e6c14610b62578063cee8770814610b81578063d11d19c214610ba0578063d48d842314610bd3575f80fd5b8063c27cabb514610add578063c59057e414610af2578063c64d2ee614610b11578063c7f758a814610b30575f80fd5b80638e9d8c341161017e578063a72246871161014e578063a722468714610a61578063b4d87a1214610a8d578063b58131b014610aac578063c01f9e3714610abe575f80fd5b80638e9d8c34146109c557806391ddadf4146109f857806396ccd67314610a235780639b9e9cf814610a42575f80fd5b8063849a83b4116101b9578063849a83b41461092d57806384b0196e1461094c5780638968eb07146109735780638df3227f14610992575f80fd5b80637d5e81e21461083a5780637fcfb164146108595780638233c0a71461088457806383c6a8d3146108fa575f80fd5b80633644e515116102d5578063544ffc9c1161026a57806364a38bf91161023a57806364a38bf9146107a757806370edcbc4146107c657806375691bff146107e55780637b3c71d31461081b575f80fd5b8063544ffc9c146106f557806355a73c531461074a57806356781388146107695780635b18c26a14610788575f80fd5b806343859632116102a5578063438596321461066a5780634bf5d7e9146106a35780634d8e0825146106b7578063519c9587146106d6575f80fd5b80633644e515146105f75780633932abb11461060b5780633bccf4fd1461061f5780633e4f49e61461063e575f80fd5b80631703a0181161034b5780632656227d1161031b5780632656227d146105735780632b20e397146105865780632d63f693146105b957806330717129146105d8575f80fd5b80631703a018146104f3578063189abd1914610506578063230bcb371461052557806324b2c7b314610554575f80fd5b80630dd320e9116103865780630dd320e91461041557806310bf506814610434578063143489d014610453578063160d66ae146104c0575f80fd5b806302a251a3146103ac57806306fdde03146103d357806307a00330146103f4575b5f80fd5b3480156103b7575f80fd5b506103c0610d56565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610d62565b6040516103ca9190613b85565b3480156103ff575f80fd5b5061041361040e366004613b97565b610df1565b005b348015610420575f80fd5b506103c061042f366004613d26565b610ea0565b34801561043f575f80fd5b5061041361044e366004613dc2565b610f6a565b34801561045e575f80fd5b5061049b61046d366004613dc2565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ca565b3480156104cb575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104fe575f80fd5b5060016103c0565b348015610511575f80fd5b50610413610520366004613dc2565b610ff3565b348015610530575f80fd5b5061054461053f366004613dd9565b61117d565b60405190151581526020016103ca565b34801561055f575f80fd5b506103c061056e366004613e01565b6111c0565b6103c0610581366004614001565b6111d8565b348015610591575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c4575f80fd5b506103c06105d3366004613dc2565b6112cd565b3480156105e3575f80fd5b506103c06105f236600461408b565b6112f5565b348015610602575f80fd5b506103c061137d565b348015610616575f80fd5b506103c06113d7565b34801561062a575f80fd5b506103c0610639366004614160565b6113e0565b348015610649575f80fd5b5061065d610658366004613dc2565b611419565b6040516103ca9190614210565b348015610675575f80fd5b5061054461068436600461421e565b600260209081525f928352604080842090915290825290205460ff1681565b3480156106ae575f80fd5b506103e7611501565b3480156106c2575f80fd5b506103c06106d1366004614248565b61150b565b3480156106e1575f80fd5b506104136106f036600461427a565b611515565b348015610700575f80fd5b5061072f61070f366004613dc2565b5f8181526001602081905260408220908101546002909101549093909250565b604080519384526020840192909252908201526060016103ca565b348015610755575f80fd5b506103c06107643660046142b3565b611536565b348015610774575f80fd5b506103c06107833660046142b3565b611548565b348015610793575f80fd5b506103c06107a23660046142d4565b611563565b3480156107b2575f80fd5b506103c06107c1366004614338565b611597565b3480156107d1575f80fd5b506103c06107e0366004614338565b6115b9565b3480156107f0575f80fd5b506103c06107ff366004613dd9565b600760209081525f928352604080842090915290825290205481565b348015610826575f80fd5b506103c06108353660046143dd565b6115f9565b348015610845575f80fd5b506103c0610854366004614427565b61163b565b348015610864575f80fd5b506103c0610873366004613dc2565b60066020525f908152604090205481565b34801561088f575f80fd5b506108ce61089e366004613dc2565b5f908152600560205260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016103ca565b348015610905575f80fd5b506103c07f000000000000000000000000000000000000000000000000000000000000000081565b348015610938575f80fd5b506103c0610947366004613e01565b6117c5565b348015610957575f80fd5b50610960611825565b6040516103ca97969594939291906144fb565b34801561097e575f80fd5b506103c061098d366004614583565b61195d565b34801561099d575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d0575f80fd5b506103c07fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b348015610a03575f80fd5b50610a0c6119cc565b60405165ffffffffffff90911681526020016103ca565b348015610a2e575f80fd5b506103c0610a3d3660046143dd565b6119d5565b348015610a4d575f80fd5b506103c0610a5c366004614610565b6119e2565b348015610a6c575f80fd5b5060035461049b9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a98575f80fd5b50610413610aa736600461421e565b611a64565b348015610ab7575f80fd5b505f6103c0565b348015610ac9575f80fd5b506103c0610ad8366004613dc2565b611a7a565b348015610ae8575f80fd5b506103c060045481565b348015610afd575f80fd5b506103c0610b0c366004614001565b611a91565b348015610b1c575f80fd5b506103c0610b2b3660046146c4565b611ab4565b348015610b3b575f80fd5b50610b4f610b4a366004613dc2565b611b06565b6040516103ca9796959493929190614737565b348015610b6d575f80fd5b50610413610b7c366004613dd9565b611b6d565b348015610b8c575f80fd5b506103c0610b9b366004614795565b611c8a565b348015610bab575f80fd5b506103c07f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610bde575f80fd5b50610413610bed36600461421e565b611cda565b348015610bfd575f80fd5b506103e7611cec565b348015610c11575f80fd5b506103c07f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c44575f80fd5b506103c0610c53366004613dd9565b611d0c565b348015610c63575f80fd5b506103c07f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610c96575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cc9575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cfc575f80fd5b5061049b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610d2f575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061049b565b5f805b61ffff16905090565b60605f8054610d7090614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9c90614811565b8015610de75780601f10610dbe57610100808354040283529160200191610de7565b820191905f5260205f20905b815481529060010190602001808311610dca57829003601f168201915b5050505050905090565b610df9611dc5565b6040517f07a0033000000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307a00330906044015b5f604051808303815f87803b158015610e86575f80fd5b505af1158015610e98573d5f803e3d5ffd5b505050505050565b5f610f0587610eff8888604051602001610ebb929190614862565b604051602081830303815290604052805190602001208787604051602001610ee49291906148a2565b60405160208183030381529060405280519060200120611e00565b84611e5c565b610f5f87878787878267ffffffffffffffff811115610f2657610f26613c20565b604051908082528060200260200182016040528015610f5957816020015b6060815260200190600190039081610f445790505b50611ea7565b979650505050505050565b333014801590610fb057503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15610fe7576040517fec4acc1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff081612011565b50565b5f610ffd82611419565b90506006816007811115611013576110136141aa565b1415801561103357506003816007811115611030576110306141aa565b14155b1561107557806040517f3c726c1700000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b60405180910390fd5b5f82815260056020526040812060010154908190036110c0576040517f2c66d4a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260056020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556001909101939093555183815273ffffffffffffffffffffffffffffffffffffffff90921691829186917f847147bb46f853e52eedf4997e56154050d17c103e1bfe61a185f02a7b6b66c0910160405180910390a3611177817f00000000000000000000000000000000000000000000000000000000000000008461204c565b50505050565b5f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff861684526007835281842085855290925290912054145b92915050565b5f610f5f33888888886111d3888a6148db565b611ea7565b5f6111e485858561208d565b5f60016111ef612230565b6111f99190614978565b905061121f845f815181106112105761121061499a565b60200260200101518283612239565b5f81815260056020526040902060018101548154929450909173ffffffffffffffffffffffffffffffffffffffff1681156112c1575f85815260056020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560019081018490559091529020546112c19082906301000000900473ffffffffffffffffffffffffffffffffffffffff168461204c565b50505050949350505050565b5f8181526001602081905260408220546112eb919061ffff16614978565b61ffff1692915050565b5f61135e89610eff8a8a604051602001611310929190614862565b6040516020818303038152906040528051906020012089896040516020016113399291906148a2565b60405160208183030381529060405280519060200120611359898961232d565b612410565b61137089898989896111d3898b6148db565b9998505050505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146113b2576113ad61245c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f610d596124f6565b5f61140f6113f96113f1888861252c565b868686612573565b878760405180602001604052805f815250612597565b9695505050505050565b5f818152600160205260408120805462010000900460ff161561143f5750600792915050565b5f611448612230565b825490915061ffff165f81900361148b576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061ffff168261ffff1610156114a557505f949350505050565b8061ffff808216908416036114c05750600195945050505050565b83600101548460020154116114db5750600395945050505050565b8060010161ffff168361ffff1611156114f557600661140f565b60049695505050505050565b60606113ad612642565b5f6111ba82612662565b61151d611dc5565b6115278383612674565b61153183826126ef565b505050565b5f611541838361252c565b9392505050565b5f61154133848460405180602001604052805f815250612597565b5f61157285610eff868661252c565b61158c85858560405180602001604052805f815250612597565b90505b949350505050565b5f61158c33868686868267ffffffffffffffff811115610f2657610f26613c20565b5f61158c85856040516020016115d0929190614862565b604051602081830303815290604052805190602001208484604051602001610ee49291906148a2565b5f61158c33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f806116498686868661276a565b61ffff165f8181526006602052604081208054939550919350909161166d906149c7565b91829055506001036116f5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c8f4a8936040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116de575f80fd5b505af11580156116f0573d5f803e3d5ffd5b505050505b6004545f81900361170757505061158f565b60035460408051808201825273ffffffffffffffffffffffffffffffffffffffff92831680825260208083018681525f8981526005909252939020915182547fffffffffffffffffffffffff00000000000000000000000000000000000000001694169390931781559051600190910155611784813330856129b1565b6117ba576040517f7939f42400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050949350505050565b5f610f5f87876040516020016117dc929190614862565b6040516020818303038152906040528051906020012086866040516020016118059291906148a2565b60405160208183030381529060405280519060200120611359868661232d565b5f60608082808083814630828060405190808252806020026020018201604052801561185b578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461188e90614811565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba90614811565b80156119055780601f106118dc57610100808354040283529160200191611905565b820191905f5260205f20905b8154815290600101906020018083116118e857829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f6119c06119a36113f18a8a60405160200161197a929190614862565b604051602081830303815290604052805190602001208989604051602001610ee49291906148a2565b898989898267ffffffffffffffff811115610f2657610f26613c20565b98975050505050505050565b5f610d59612230565b5f61158c85858585612a8f565b5f611a56611a486113f18c8c6040516020016119ff929190614862565b604051602081830303815290604052805190602001208b8b604051602001611a289291906148a2565b604051602081830303815290604052805190602001206113598b8b61232d565b8b8b8b8b6111d38b8d6148db565b9a9950505050505050505050565b611a6c611dc5565b611a7682826126ef565b5050565b5f8181526001602052604081205461ffff166112eb565b5f61158c835f81518110611aa757611aa761499a565b6020026020010151612662565b5f611ac587610eff88888888612a8f565b610f5f87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b5f818152600160205260408120805461ffff169182918190819081908190611b2d89611419565b600182810154600284015493549a9c999b5091999198929750630100000090910473ffffffffffffffffffffffffffffffffffffffff1695509350915050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611bdc576040517fb30b9d4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611be582612af9565b6040517f286b1d0b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063286b1d0b906024015f604051808303815f87803b158015611c6b575f80fd5b505af1158015611c7d573d5f803e3d5ffd5b50505050611a7681612011565b5f6119c0611c9d6113f18a8a8a8a612a8f565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061259792505050565b611ce2611dc5565b611a768282612674565b60606040518060600160405280602f8152602001614f0b602f9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa158015611da1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154191906149fe565b333014611dfe576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f90611541906080015b60405160208183030381529060405280519060200120612bb4565b5f611e68848484612c15565b90505f816005811115611e7d57611e7d6141aa565b03611e885750505050565b611e93848484612c4f565b15611e9e5750505050565b61117781612d97565b5f84808203611ee2576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611f25576040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161106c565b82518114611f6c5782516040517ffa5dbe0800000000000000000000000000000000000000000000000000000000815261106c918391600401918252602082015260400190565b611f8d886001611f7a612230565b611f849190614978565b61ffff16611d0c565b91505f5b8181101561200557611ffd89848a8a85818110611fb057611fb061499a565b90506020020135898986818110611fc957611fc961499a565b9050602002016020810190611fde9190614a15565b888681518110611ff057611ff061499a565b6020026020010151612f5b565b600101611f91565b50509695505050505050565b60048190556040518181527f541c2b585302c70ad540b5b858177b648b4c1c75073e78ac37aa2edb67dddd869060200160405180910390a150565b612057838383613215565b611531576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516001146120c8576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f815181106120f1576120f161499a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612146576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114612181576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f815181106121935761219361499a565b60200260200101515f146121d3576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160011461220e576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611531815f815181106122235761222361499a565b602002602001015161326d565b5f6113ad61346d565b5f3415612272576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f036122af576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff16106122fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301926122ed908590613495565b9050805f03611541576122af565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff81111561234957612349613c20565b604051908082528060200260200182016040528015612372578160200160208202803683370190505b5090505f5b828110156123de578585828181106123915761239161499a565b90506020028101906123a39190614a2e565b6040516123b1929190614a8f565b60405180910390208282815181106123cb576123cb61499a565b6020908102919091010152600101612377565b50806040516020016123f09190614a9e565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f9061158f9060a001611e41565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f60405161248e9190614ad3565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f60026125016119cc565b61250b9190614bd5565b65ffffffffffff16600114612521576001612524565b60025b60ff16905090565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f9061154190608001611e41565b5f8061258186868686613604565b9250905061258e81612d97565b50949350505050565b5f806125a285611419565b905060018160078111156125b8576125b86141aa565b146125f157806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b5f858152600160205260409020546126339087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9182160116611d0c565b915061258e8683878787612f5b565b60606040518060a0016040528060658152602001614ea660659139905090565b5f6111ba8261266f613711565b613728565b6040517fd48d84230000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d48d842390604401610e6f565b6040517fb4d87a120000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b4d87a1290604401610e6f565b5f8061277786868661208d565b61277f613711565b90506127a4845f815181106127965761279661499a565b602002602001015182613728565b5f8181526001602052604090205490925061ffff16156127f0576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61291482826040805160c08101825261ffff92831681525f602080830182815233848601908152606085018481526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff81111561295357612953613c20565b60405190808252806020026020018201604052801561298657816020015b60608152602001906001900390816129715790505b508987808b6040516129a099989796959493929190614c6f565b60405180910390a194509492505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290525f9061158c9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261377b565b5f61158c7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b86868686604051612ac8929190614a8f565b604051908190038120611e4194939291602001938452602084019290925260ff166040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff8116612b46576040517f9ce2462600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f80ad633436e52e87151a445d2f18b89f15cc0b126e0b81568f6d19861c827b3b905f90a250565b5f612bbd61137d565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f612c22858561382f565b90925090505f826005811115612c3a57612c3a6141aa565b14612c45578161140f565b61140f8682613873565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612c7c929190614d4b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e0000000000000000000000000000000000000000000000000000000017905251612cfd9190614d63565b5f60405180830381855afa9150503d805f8114612d35576040519150601f19603f3d011682016040523d82523d5f602084013e612d3a565b606091505b5091509150818015612d4e57506020815110155b801561140f575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612d8c90830160209081019084016149fe565b149695505050505050565b5f816005811115612daa57612daa6141aa565b03612db25750565b6001816005811115612dc657612dc66141aa565b03612dfd576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612e1157612e116141aa565b03612e48576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612e5c57612e5c6141aa565b03612e93576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612ea757612ea76141aa565b03612ede576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612ef257612ef26141aa565b03612f29576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612f6584611419565b90506001816007811115612f7b57612f7b6141aa565b14612fb457806040517f88f40ea000000000000000000000000000000000000000000000000000000000815260040161106c9190614210565b612fc186868686866138b6565b5f612fca612230565b61ffff81165f8181526006602090815260408083205473ffffffffffffffffffffffffffffffffffffffff8d1684526007835281842094845293909152812080549394509192613019906149c7565b91829055501461302a57505061320e565b60405161ffff82169073ffffffffffffffffffffffffffffffffffffffff8916907faec1eae443fe2f674be7e8a9e6de65d4b90f5536050fe468320204a765012701905f90a36040517fc580b26900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c580b269906024015f604051808303815f87803b1580156130f6575f80fd5b505af1158015613108573d5f803e3d5ffd5b505050505f61312260018361311d9190614978565b613a68565b61314c887f0000000000000000000000000000000000000000000000000000000000000000614d7e565b6131569190614d95565b9050805f036131675750505061320e565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b1580156131f4575f80fd5b505af1158015613206573d5f803e3d5ffd5b505050505050505b5050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290525f9061158f9085907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612a0d565b5f61327782614da8565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167fb4d87a12000000000000000000000000000000000000000000000000000000001480156132cd5750604481145b15801561332857507fffffffff0000000000000000000000000000000000000000000000000000000082167fd48d8423000000000000000000000000000000000000000000000000000000001480156133265750604481145b155b801561338257507fffffffff0000000000000000000000000000000000000000000000000000000082167f519c9587000000000000000000000000000000000000000000000000000000001480156133805750606481145b155b80156133dc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f07a00330000000000000000000000000000000000000000000000000000000001480156133da5750604481145b155b801561343657507fffffffff0000000000000000000000000000000000000000000000000000000082167f10bf5068000000000000000000000000000000000000000000000000000000001480156134345750602481145b155b15611531576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c68061348063661bd35042614df7565b61348a9190614d95565b6113ad906001614e0a565b5f6134a08383613728565b5f81815260016020526040902080549192509061ffff8481169116146134c9575f9150506111ba565b60046134d483611419565b60078111156134e5576134e56141aa565b146134f3575f9150506111ba565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906135509084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff168660405161357f9190614d63565b5f604051808303815f865af19150503d805f81146135b8576040519150601f19603f3d011682016040523d82523d5f602084013e6135bd565b606091505b5091509150816135fb57806040517f15fcd67500000000000000000000000000000000000000000000000000000000815260040161106c9190613b85565b50505092915050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156136395750600390505f613708565b8460ff16601b1415801561365157508460ff16601c14155b156136615750600490505f613708565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156136b1573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116156136ff575f81613703565b60015f5b915091505b94509492505050565b5f61371a6124f6565b613722612230565b01905090565b5f82823060405160200161373e93929190614e1d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83163b61379f57505f6111ba565b60608373ffffffffffffffffffffffffffffffffffffffff16836040516137c69190614d63565b5f604051808303815f865af19150503d805f81146137ff576040519150601f19603f3d011682016040523d82523d5f602084013e613804565b606091505b50909250905081801561158f57508051158061158f57508080602001905181019061158f9190614e5f565b5f8082516041146138455750600290505f61386c565b6020830151604084015160608501515f1a919061386487848484613604565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146138ae576005611541565b505f92915050565b835f036138ef576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615613958576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff1660018111156139c4576139c46141aa565b60018111156139d5576139d56141aa565b036139f6575f83815260016020819052604090912001805485019055613a0d565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda484848785604051613a599493929190614e7e565b60405180910390a25050505050565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015613af6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba91906149fe565b5f5b83811015613b34578181015183820152602001613b1c565b50505f910152565b5f8151808452613b53816020860160208601613b1a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6115416020830184613b3c565b5f8060408385031215613ba8575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114613bda575f80fd5b919050565b5f8083601f840112613bef575f80fd5b50813567ffffffffffffffff811115613c06575f80fd5b6020830191508360208260051b850101111561386c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613c9457613c94613c20565b604052919050565b5f82601f830112613cab575f80fd5b813567ffffffffffffffff811115613cc557613cc5613c20565b613cf660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c4d565b818152846020838601011115613d0a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613d3b575f80fd5b613d4487613bb7565b9550602087013567ffffffffffffffff80821115613d60575f80fd5b613d6c8a838b01613bdf565b90975095506040890135915080821115613d84575f80fd5b613d908a838b01613bdf565b90955093506060890135915080821115613da8575f80fd5b50613db589828a01613c9c565b9150509295509295509295565b5f60208284031215613dd2575f80fd5b5035919050565b5f8060408385031215613dea575f80fd5b613df383613bb7565b946020939093013593505050565b5f805f805f8060608789031215613e16575f80fd5b863567ffffffffffffffff80821115613e2d575f80fd5b613e398a838b01613bdf565b90985096506020890135915080821115613e51575f80fd5b613e5d8a838b01613bdf565b90965094506040890135915080821115613e75575f80fd5b50613e8289828a01613bdf565b979a9699509497509295939492505050565b5f67ffffffffffffffff821115613ead57613ead613c20565b5060051b60200190565b5f82601f830112613ec6575f80fd5b81356020613edb613ed683613e94565b613c4d565b8083825260208201915060208460051b870101935086841115613efc575f80fd5b602086015b84811015613f1f57613f1281613bb7565b8352918301918301613f01565b509695505050505050565b5f82601f830112613f39575f80fd5b81356020613f49613ed683613e94565b8083825260208201915060208460051b870101935086841115613f6a575f80fd5b602086015b84811015613f1f5780358352918301918301613f6f565b5f82601f830112613f95575f80fd5b81356020613fa5613ed683613e94565b82815260059290921b84018101918181019086841115613fc3575f80fd5b8286015b84811015613f1f57803567ffffffffffffffff811115613fe5575f80fd5b613ff38986838b0101613c9c565b845250918301918301613fc7565b5f805f8060808587031215614014575f80fd5b843567ffffffffffffffff8082111561402b575f80fd5b61403788838901613eb7565b9550602087013591508082111561404c575f80fd5b61405888838901613f2a565b9450604087013591508082111561406d575f80fd5b5061407a87828801613f86565b949793965093946060013593505050565b5f805f805f805f8060a0898b0312156140a2575f80fd5b6140ab89613bb7565b9750602089013567ffffffffffffffff808211156140c7575f80fd5b6140d38c838d01613bdf565b909950975060408b01359150808211156140eb575f80fd5b6140f78c838d01613bdf565b909750955060608b013591508082111561410f575f80fd5b61411b8c838d01613bdf565b909550935060808b0135915080821115614133575f80fd5b506141408b828c01613c9c565b9150509295985092959890939650565b803560ff81168114613bda575f80fd5b5f805f805f60a08688031215614174575f80fd5b8535945061418460208701614150565b935061419260408701614150565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6008811061420c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b602081016111ba82846141d7565b5f806040838503121561422f575f80fd5b8235915061423f60208401613bb7565b90509250929050565b5f60208284031215614258575f80fd5b813567ffffffffffffffff81111561426e575f80fd5b61158f84828501613c9c565b5f805f6060848603121561428c575f80fd5b8335925061429c60208501613bb7565b91506142aa60408501613bb7565b90509250925092565b5f80604083850312156142c4575f80fd5b8235915061423f60208401614150565b5f805f80608085870312156142e7575f80fd5b6142f085613bb7565b93506020850135925061430560408601614150565b9150606085013567ffffffffffffffff811115614320575f80fd5b61432c87828801613c9c565b91505092959194509250565b5f805f806040858703121561434b575f80fd5b843567ffffffffffffffff80821115614362575f80fd5b61436e88838901613bdf565b90965094506020870135915080821115614386575f80fd5b5061439387828801613bdf565b95989497509550505050565b5f8083601f8401126143af575f80fd5b50813567ffffffffffffffff8111156143c6575f80fd5b60208301915083602082850101111561386c575f80fd5b5f805f80606085870312156143f0575f80fd5b8435935061440060208601614150565b9250604085013567ffffffffffffffff81111561441b575f80fd5b6143938782880161439f565b5f805f806080858703121561443a575f80fd5b843567ffffffffffffffff80821115614451575f80fd5b61445d88838901613eb7565b95506020870135915080821115614472575f80fd5b61447e88838901613f2a565b94506040870135915080821115614493575f80fd5b61449f88838901613f86565b935060608701359150808211156144b4575f80fd5b5061432c87828801613c9c565b5f815180845260208085019450602084015f5b838110156144f0578151875295820195908201906001016144d4565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61453560e0830189613b3c565b82810360408401526145478189613b3c565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152611a5681856144c1565b5f805f805f805f60a0888a031215614599575f80fd5b873567ffffffffffffffff808211156145b0575f80fd5b6145bc8b838c01613bdf565b909950975060208a01359150808211156145d4575f80fd5b506145e18a828b01613bdf565b90965094506145f4905060408901614150565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c031215614628575f80fd5b893567ffffffffffffffff8082111561463f575f80fd5b61464b8d838e01613bdf565b909b50995060208c0135915080821115614663575f80fd5b61466f8d838e01613bdf565b909950975060408c0135915080821115614687575f80fd5b506146948c828d01613bdf565b90965094506146a7905060608b01614150565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a087890312156146d9575f80fd5b6146e287613bb7565b9550602087013594506146f760408801614150565b9350606087013567ffffffffffffffff80821115614713575f80fd5b61471f8a838b0161439f565b90955093506080890135915080821115613da8575f80fd5b65ffffffffffff88811682528716602082015260e0810161475b60408301886141d7565b85606083015284608083015273ffffffffffffffffffffffffffffffffffffffff841660a08301528260c083015298975050505050505050565b5f805f805f805f60c0888a0312156147ab575f80fd5b873596506147bb60208901614150565b9550604088013567ffffffffffffffff8111156147d6575f80fd5b6147e28a828b0161439f565b90965094506147f5905060608901614150565b92506080880135915060a0880135905092959891949750929550565b600181811c9082168061482557607f821691505b60208210810361485c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561488f575f80fd5b8260051b80858437919091019392505050565b5f8184825b858110156148d05760ff6148ba83614150565b16835260209283019291909101906001016148a7565b509095945050505050565b5f6148e8613ed684613e94565b80848252602080830192508560051b850136811115614905575f80fd5b855b8181101561493f57803567ffffffffffffffff811115614925575f80fd5b61493136828a01613c9c565b865250938201938201614907565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8281168282160390808211156149935761499361494b565b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149f7576149f761494b565b5060010190565b5f60208284031215614a0e575f80fd5b5051919050565b5f60208284031215614a25575f80fd5b61154182614150565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a61575f80fd5b83018035915067ffffffffffffffff821115614a7b575f80fd5b60200191503681900382131561386c575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b83811015614ac757815185529382019390820190600101614aab565b50929695505050505050565b5f8083545f60018260011c91506001831680614af057607f831692505b60208084108203614b28577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015614b3c5760018114614b6f57614b9a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650614b9a565b5f8a8152602090205f5b86811015614b925781548b820152908501908301614b79565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f65ffffffffffff80841680614bed57614bed614ba8565b92169190910692915050565b5f8282518085526020808601955060208260051b840101602086015f5b84811015614c62577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614c50838351613b3c565b98840198925090830190600101614c16565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b81811015614cd3578451831686529483019493830193600101614cb5565b50505050508281036060840152614cea818a6144c1565b90508281036080840152614cfe8189614bf9565b905082810360a0840152614d128188614bf9565b61ffff871660c0850152905061ffff851660e0840152828103610100840152614d3b8185613b3c565b9c9b505050505050505050505050565b828152604060208201525f61158f6040830184613b3c565b5f8251614d74818460208701613b1a565b9190910192915050565b80820281158282048414176111ba576111ba61494b565b5f82614da357614da3614ba8565b500490565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015614def5780818460040360031b1b83161693505b505050919050565b818103818111156111ba576111ba61494b565b808201808211156111ba576111ba61494b565b606081525f614e2f6060830186613b3c565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b5f60208284031215614e6f575f80fd5b81518015158114611541575f80fd5b84815260ff84166020820152826040820152608060608201525f61140f6080830184613b3c56fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d6d616a6f72697479a2646970667358221220910b9b15080ecc4ba50adffad5058892763d9688bf7f05fbda99784b46bbf72a64736f6c63430008170033a2646970667358221220eb6038ce966d40d297f0ff662d4c3d2117029c8374f57a416495df5c81f5565564736f6c63430008170033" } diff --git a/modules/m-core/bytecode/ZeroGovernor.json b/modules/m-core/bytecode/ZeroGovernor.json index 3ad2d6ed..124017e4 100644 --- a/modules/m-core/bytecode/ZeroGovernor.json +++ b/modules/m-core/bytecode/ZeroGovernor.json @@ -1 +1 @@ -{ "bytecode": "0x61014060405234801562000011575f80fd5b506040516200577a3803806200577a83398101604081905262000034916200072b565b60408051808201909152600c81526b2d32b937a3b7bb32b93737b960a11b602082015289838282815f62000069828262000911565b5046608052620000786200026e565b60a052506001600160a01b03811660c0819052620000a9576040516316d3e4a360e01b815260040160405180910390fd5b50620000b79050816200030a565b5050506001600160a01b03881660e0819052620000e757604051635788a27960e11b815260040160405180910390fd5b6001600160a01b0387166101008190526200011557604051631412fc3f60e11b815260040160405180910390fd5b6001600160a01b03861661012081905262000143576040516333927a8160e21b815260040160405180910390fd5b80515f0362000165576040516311596cb960e01b815260040160405180910390fd5b5f5b8151811015620001ef575f828281518110620001875762000187620009dd565b602002602001015190505f6001600160a01b0316816001600160a01b031603620001c457604051634e71231360e11b815260040160405180910390fd5b6001600160a01b03165f908152600460205260409020805460ff191660019081179091550162000167565b507f786ba9170c247d41ad3b2f65513f754efd3172b40b4063d70c2cf5fdde4cb83981604051620002219190620009f1565b60405180910390a16200025c88888888855f81518110620002465762000246620009dd565b6020026020010151888a620003ea60201b60201c565b50505050505050505050505062000adc565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620002a2919062000a3f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127108161ffff16118062000324575061010f61ffff8216105b156200035e5760405163073543c360e31b815261ffff8216600482015261010f602482015261271060448201526064015b60405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a16003805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f805f80896001600160a01b031663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000451919062000ab9565b90505f896001600160a01b031663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000491573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004b7919062000ab9565b6040516306bc04c760e21b81526001600160a01b038481166004830152808316602483015261ffff8a166044830152919250908d1690631af0131c906064016020604051808303815f875af115801562000513573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000539919062000ab9565b604051638489e17960e01b81526001600160a01b03848116600483015280831660248301528a811660448301526064820189905265048c273950006084830152919550908b1690638489e1799060a4016020604051808303815f875af1158015620005a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005cc919062000ab9565b9450846001600160a01b0316816001600160a01b031614620006155760405163a20b5bb960e01b81526001600160a01b0380831660048301528616602482015260440162000355565b60405163d9181cd360e01b81526001600160a01b038a81166004830152868116602483015289811660448301528c169063d9181cd3906064016020604051808303815f875af11580156200066b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000691919062000ab9565b9250826001600160a01b0316826001600160a01b031614620006da57604051630f51530760e21b81526001600160a01b0380841660048301528416602482015260440162000355565b50509750975097945050505050565b80516001600160a01b038116811462000700575f80fd5b919050565b805161ffff8116811462000700575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f805f805f6101208a8c03121562000745575f80fd5b620007508a620006e9565b98506200076060208b01620006e9565b97506200077060408b01620006e9565b96506200078060608b01620006e9565b95506200079060808b01620006e9565b945060a08a01519350620007a760c08b0162000705565b9250620007b760e08b0162000705565b6101008b01519092506001600160401b0380821115620007d5575f80fd5b818c0191508c601f830112620007e9575f80fd5b815181811115620007fe57620007fe62000717565b8060051b604051601f19603f8301168101818110858211171562000826576200082662000717565b6040529182526020808301935084820101918f83111562000845575f80fd5b6020850194505b8285101562000872576200086085620006e9565b8452602094850194909301926200084c565b80955050505050509295985092959850929598565b600181811c908216806200089c57607f821691505b602082108103620008bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200090c57805f5260205f20601f840160051c81016020851015620008e85750805b601f840160051c820191505b8181101562000909575f8155600101620008f4565b50505b505050565b81516001600160401b038111156200092d576200092d62000717565b62000945816200093e845462000887565b84620008c1565b602080601f8311600181146200097b575f8415620009635750858301515b5f19600386901b1c1916600185901b178555620009d5565b5f85815260208120601f198616915b82811015620009ab578886015182559484019460019091019084016200098a565b5085821015620009c957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f9190848201906040850190845b8181101562000a335783516001600160a01b03168352928401929184019160010162000a0c565b50909695505050505050565b5f80835462000a4e8162000887565b6001828116801562000a69576001811462000a7f5762000aad565b60ff198416875282151583028701945062000aad565b875f526020805f205f5b8581101562000aa45781548a82015290840190820162000a89565b50505082870194505b50929695505050505050565b5f6020828403121562000aca575f80fd5b62000ad582620006e9565b9392505050565b60805160a05160c05160e0516101005161012051614c1762000b635f395f8181610b330152818161116f015261229c01525f8181610964015261227b01525f81816106e7015281816119c3015261225a01525f818161049101528181610be80152818161113e0152818161195501526125c901525f610eef01525f610ebf0152614c175ff3fe608060405260043610610387575f3560e01c80637b3c71d3116101d3578063c2ee3a08116100fd578063dd4e2ba51161009d578063f046c6461161006d578063f046c64614610b74578063f52c93c514610ba7578063fb999fcb14610bbb578063fc0c546a14610bda575f80fd5b8063dd4e2ba514610adb578063deaaa7cc14610aef578063e94bb22314610b22578063eb9019d414610b55575f80fd5b8063c7f758a8116100d8578063c7f758a814610a37578063c9167e6c14610a6a578063cee8770814610a89578063d11d19c214610aa8575f80fd5b8063c2ee3a08146109e4578063c59057e4146109f9578063c64d2ee614610a18575f80fd5b806396ccd67311610173578063af63a3e111610143578063af63a3e114610953578063b58131b014610986578063c01f9e3714610998578063c0324da1146109b7575f80fd5b806396ccd673146108e957806397c3d334146109085780639b9e9cf81461091c578063a7713a701461093b575f80fd5b806384b0196e116101ae57806384b0196e146108455780638968eb071461086c5780638e9d8c341461088b57806391ddadf4146108be575f80fd5b80637b3c71d3146107e85780637d5e81e214610807578063849a83b414610826575f80fd5b80633e4f49e6116102b4578063544ffc9c116102545780635b18c26a116102245780635b18c26a1461074757806364a38bf91461076657806370edcbc41461078557806377750fde146107a4575f80fd5b8063544ffc9c146106815780635548917f146106d657806355a73c53146107095780635678138814610728575f80fd5b80634bf5d7e91161028f5780634bf5d7e91461061b5780634d6d74411461062f5780634d8e08251461064357806353b0bbfd14610662575f80fd5b80633e4f49e61461059257806343859632146105be57806349a45dfb14610607575f80fd5b806324b2c7b31161032a5780633644e515116102fa5780633644e515146105375780633932abb11461054b5780633a5762d31461055f5780633bccf4fd14610573575f80fd5b806324b2c7b3146104c75780632656227d146104e65780632d63f693146104f95780633071712914610518575f80fd5b80630dd320e9116103655780630dd320e9146103f4578063143489d014610413578063160d66ae146104805780631703a018146104b3575f80fd5b806302a251a31461038b57806306fdde03146103b2578063086f7d65146103d3575b5f80fd5b348015610396575f80fd5b5061039f610c0c565b6040519081526020015b60405180910390f35b3480156103bd575f80fd5b506103c6610c19565b6040516103a9919061386d565b3480156103de575f80fd5b506103f26103ed36600461388e565b610ca8565b005b3480156103ff575f80fd5b5061039f61040e366004613a11565b610cbc565b34801561041e575f80fd5b5061045b61042d366004613aaf565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a9565b34801561048b575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104be575f80fd5b5061039f610d86565b3480156104d2575f80fd5b5061039f6104e1366004613ac6565b610da3565b61039f6104f4366004613cc8565b610dbb565b348015610504575f80fd5b5061039f610513366004613aaf565b610e0c565b348015610523575f80fd5b5061039f610532366004613d52565b610e34565b348015610542575f80fd5b5061039f610ebc565b348015610556575f80fd5b5061039f610f11565b34801561056a575f80fd5b506103f2610f18565b34801561057e575f80fd5b5061039f61058d366004613e2e565b610f9e565b34801561059d575f80fd5b506105b16105ac366004613aaf565b610fcd565b6040516103a99190613ede565b3480156105c9575f80fd5b506105f76105d8366004613eec565b600260209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016103a9565b348015610612575f80fd5b506103f2611131565b348015610626575f80fd5b506103c6611162565b34801561063a575f80fd5b5061045b61116c565b34801561064e575f80fd5b5061039f61065d366004613f1a565b6111fa565b34801561066d575f80fd5b506103f261067c36600461388e565b61120a565b34801561068c575f80fd5b506106bb61069b366004613aaf565b5f8181526001602081905260408220908101546002909101549093909250565b604080519384526020840192909252908201526060016103a9565b3480156106e1575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610714575f80fd5b5061039f610723366004613f4c565b61129d565b348015610733575f80fd5b5061039f610742366004613f4c565b6112af565b348015610752575f80fd5b5061039f610761366004613f76565b6112ca565b348015610771575f80fd5b5061039f610780366004613fdc565b6112fc565b348015610790575f80fd5b5061039f61079f366004613fdc565b61131e565b3480156107af575f80fd5b506105f76107be366004614043565b73ffffffffffffffffffffffffffffffffffffffff165f9081526004602052604090205460ff1690565b3480156107f3575f80fd5b5061039f61080236600461409c565b61135e565b348015610812575f80fd5b5061039f6108213660046140e6565b6113a0565b348015610831575f80fd5b5061039f610840366004613ac6565b6113b7565b348015610850575f80fd5b50610859611417565b6040516103a997969594939291906141ba565b348015610877575f80fd5b5061039f610886366004614242565b61154f565b348015610896575f80fd5b5061039f7fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b3480156108c9575f80fd5b506108d26115be565b60405165ffffffffffff90911681526020016103a9565b3480156108f4575f80fd5b5061039f61090336600461409c565b6115c7565b348015610913575f80fd5b5061271061039f565b348015610927575f80fd5b5061039f6109363660046142cf565b6115d4565b348015610946575f80fd5b5060035461ffff1661039f565b34801561095e575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610991575f80fd5b505f61039f565b3480156109a3575f80fd5b5061039f6109b2366004613aaf565b611656565b3480156109c2575f80fd5b506003546109d19061ffff1681565b60405161ffff90911681526020016103a9565b3480156109ef575f80fd5b5061039f61271081565b348015610a04575f80fd5b5061039f610a13366004613cc8565b611670565b348015610a23575f80fd5b5061039f610a32366004614383565b611693565b348015610a42575f80fd5b50610a56610a51366004613aaf565b6116e5565b6040516103a99897969594939291906143f8565b348015610a75575f80fd5b506103f2610a84366004614461565b6117a0565b348015610a94575f80fd5b5061039f610aa336600461448b565b611897565b348015610ab3575f80fd5b5061039f7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610ae6575f80fd5b506103c66118e7565b348015610afa575f80fd5b5061039f7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b2d575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b60575f80fd5b5061039f610b6f366004614461565b611907565b348015610b7f575f80fd5b5061039f7f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610bb2575f80fd5b5061045b6119c0565b348015610bc6575f80fd5b5061039f610bd5366004613aaf565b611a2a565b348015610be5575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061045b565b5f60015b61ffff16905090565b60605f8054610c2790614507565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5390614507565b8015610c9e5780601f10610c7557610100808354040283529160200191610c9e565b820191905f5260205f20905b815481529060010190602001808311610c8157829003601f168201915b5050505050905090565b610cb0611a65565b610cb981611a9e565b50565b5f610d2187610d1b8888604051602001610cd7929190614558565b604051602081830303815290604052805190602001208787604051602001610d00929190614598565b60405160208183030381529060405280519060200120611bb2565b84611c0e565b610d7b87878787878267ffffffffffffffff811115610d4257610d4261390b565b604051908082528060200260200182016040528015610d7557816020015b6060815260200190600190039081610d605790505b50611c5f565b979650505050505050565b5f610d9e610d92611da7565b60035461ffff16611db0565b905090565b5f610d7b3388888888610db6888a6145d1565b611c5f565b5f610dc7858585611dda565b5f610dd0611da7565b9050610e02845f81518110610de757610de7614641565b602002602001015182600184610dfd919061469b565b611f82565b9695505050505050565b5f818152600160208190526040822054610e2a919061ffff1661469b565b61ffff1692915050565b5f610e9d89610d1b8a8a604051602001610e4f929190614558565b604051602081830303815290604052805190602001208989604051602001610e78929190614598565b60405160208183030381529060405280519060200120610e988989612076565b612159565b610eaf8989898989610db6898b6145d1565b9998505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610eec57610d9e6121ad565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610c10565b610f20611a65565b610f9c610f2b61116c565b73ffffffffffffffffffffffffffffffffffffffff1663160d66ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9791906146bd565b612247565b565b5f610e02610fb7610faf888861247f565b8686866124c6565b878760405180602001604052805f8152506124ea565b5f818152600160205260408120805462010000900460ff1615610ff35750600792915050565b805461ffff165f819003611033576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61104761104260018461469b565b612595565b90505f6001830161ffff1661105a611da7565b61ffff1611159050815f036110815780611075576006610e02565b60019695505050505050565b835477010000000000000000000000000000000000000000000000900461ffff166110ac83826146d8565b61271086600201546110be91906146d8565b106110dc57816110cf576006610d7b565b6004979650505050505050565b6110ea8361ffff83166146d8565b6127108660010154856110fd91906146ef565b61110791906146d8565b101580156111125750815b15611124575060019695505050505050565b5060039695505050505050565b611139611a65565b610f9c7f0000000000000000000000000000000000000000000000000000000000000000612247565b6060610d9e612647565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9e91906146bd565b5f61120482612667565b92915050565b611212611a65565b61121a6119c0565b6040517f94eac99500000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff91909116906394eac995906024015f604051808303815f87803b158015611284575f80fd5b505af1158015611296573d5f803e3d5ffd5b5050505050565b5f6112a8838361247f565b9392505050565b5f6112a833848460405180602001604052805f8152506124ea565b5f6112d985610d1b868661247f565b6112f385858560405180602001604052805f8152506124ea565b95945050505050565b5f6112f333868686868267ffffffffffffffff811115610d4257610d4261390b565b5f6112f38585604051602001611335929190614558565b604051602081830303815290604052805190602001208484604051602001610d00929190614598565b5f6112f333868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124ea92505050565b5f6113ad85858585612679565b5095945050505050565b5f610d7b87876040516020016113ce929190614558565b6040516020818303038152906040528051906020012086866040516020016113f7929190614598565b60405160208183030381529060405280519060200120610e988686612076565b5f60608082808083814630828060405190808252806020026020018201604052801561144d578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461148090614507565b80601f01602080910402602001604051908101604052809291908181526020018280546114ac90614507565b80156114f75780601f106114ce576101008083540402835291602001916114f7565b820191905f5260205f20905b8154815290600101906020018083116114da57829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f6115b2611595610faf8a8a60405160200161156c929190614558565b604051602081830303815290604052805190602001208989604051602001610d00929190614598565b898989898267ffffffffffffffff811115610d4257610d4261390b565b98975050505050505050565b5f610c10611da7565b5f6112f3858585856128c8565b5f61164861163a610faf8c8c6040516020016115f1929190614558565b604051602081830303815290604052805190602001208b8b60405160200161161a929190614598565b60405160208183030381529060405280519060200120610e988b8b612076565b8b8b8b8b610db68b8d6145d1565b9a9950505050505050505050565b5f81815260016020819052604082205461ffff1601610e2a565b5f6112f3835f8151811061168657611686614641565b6020026020010151612667565b5f6116a487610d1b888888886128c8565b610d7b87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124ea92505050565b5f818152600160205260408120805461ffff1691908190819081908190819081906117108960010190565b61ffff16975061171f8a610fcd565b600182015460028301548354929950909750955073ffffffffffffffffffffffffffffffffffffffff6301000000820416945061177e9061ffff8082169177010000000000000000000000000000000000000000000000900416611db0565b9250805f0160179054906101000a900461ffff16915050919395975091939597565b6117a8611a65565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526004602052604090205460ff16611806576040517f23b3ddc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61180e61116c565b6040517fc9167e6c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063c9167e6c906044015f604051808303815f87803b15801561187d575f80fd5b505af115801561188f573d5f803e3d5ffd5b505050505050565b5f6115b26118aa610faf8a8a8a8a6128c8565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124ea92505050565b60606040518060600160405280602d8152602001614b50602d9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa15801561199c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a89190614702565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d6573d5f803e3d5ffd5b5f81815260016020526040812080546112a89061ffff8082169177010000000000000000000000000000000000000000000000900416611db0565b333014610f9c576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108161ffff161180611ab7575061010f61ffff8216105b15611b09576040517f39aa1e1800000000000000000000000000000000000000000000000000000000815261ffff8216600482015261010f602482015261271060448201526064015b60405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f906112a8906080015b60405160208183030381529060405280519060200120612932565b5f611c1a848484612993565b90505f816005811115611c2f57611c2f613e78565b03611c3a5750505050565b611c458484846129cd565b15611c505750505050565b611c5981612b15565b50505050565b5f84808203611c9a576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611cdd576040517ffa5dbe080000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401611b00565b82518114611d245782516040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152611b00918391600401918252602082015260400190565b5f5b81811015611d9b57611d9189898984818110611d4457611d44614641565b90506020020135888885818110611d5d57611d5d614641565b9050602002016020810190611d729190614719565b878581518110611d8457611d84614641565b60200260200101516124ea565b9250600101611d26565b50509695505050505050565b5f610d9e612cd9565b5f612710611dc261104260018661469b565b611dd09061ffff85166146d8565b6112a89190614732565b8251600114611e15576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f81518110611e3e57611e3e614641565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114611ece576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f81518110611ee057611ee0614641565b60200260200101515f14611f20576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600114611f5b576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f7d815f81518110611f7057611f70614641565b6020026020010151612d01565b505050565b5f3415611fbb576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f03611ff8576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1610612044577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192612036908590612f01565b9050805f036112a857611ff8565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff8111156120925761209261390b565b6040519080825280602002602001820160405280156120bb578160200160208202803683370190505b5090505f5b82811015612127578585828181106120da576120da614641565b90506020028101906120ec919061476a565b6040516120fa9291906147cb565b604051809103902082828151811061211457612114614641565b60209081029190910101526001016120c0565b508060405160200161213991906147da565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f906121a59060a001611bf3565b949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516121df919061480f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f61225061116c565b90505f805f61240f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888873ffffffffffffffffffffffffffffffffffffffff1663a72246876040518163ffffffff1660e01b8152600401602060405180830381865afa158015612305573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232991906146bd565b6123316119c0565b73ffffffffffffffffffffffffffffffffffffffff1663c0324da16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612379573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061239d91906148e4565b8a73ffffffffffffffffffffffffffffffffffffffff1663c27cabb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240a9190614702565b613070565b6040805173ffffffffffffffffffffffffffffffffffffffff808616825280851660208301528084169282019290925293965091945092508616907fd4507bf853cb2d7b87ab8c58bf6ad8be37f7ae56ed374ed012d09b9235e59787906060015b60405180910390a25050505050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f906112a890608001611bf3565b5f806124d486868686613468565b925090506124e181612b15565b50949350505050565b5f806124f585610fcd565b9050600181600781111561250b5761250b613e78565b1461254457806040517f88f40ea0000000000000000000000000000000000000000000000000000000008152600401611b009190613ede565b5f858152600160205260409020546125869087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9182160116611907565b91506124e18683878787613575565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015612623573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112049190614702565b60606040518060a0016040528060658152602001614b7d60659139905090565b5f61120482612674613718565b613728565b5f80612686868686611dda565b61268e613718565b90506126b3845f815181106126a5576126a5614641565b602002602001015182613728565b5f8181526001602052604090205490925061ffff16156126ff576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61282882826040805160c08101825261ffff92831681525f6020808301828152338486019081526003548716606086019081526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff8111156128675761286761390b565b60405190808252806020026020018201604052801561289a57816020015b60608152602001906001900390816128855790505b508987600181018b6040516128b799989796959493929190614975565b60405180910390a194509492505050565b5f6112f37f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b868686866040516129019291906147cb565b604051908190038120611bf394939291602001938452602084019290925260ff166040830152606082015260800190565b5f61293b610ebc565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f6129a0858561377b565b90925090505f8260058111156129b8576129b8613e78565b146129c35781610e02565b610e0286826137bf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1685856040516024016129fa929190614a51565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e0000000000000000000000000000000000000000000000000000000017905251612a7b9190614a69565b5f60405180830381855afa9150503d805f8114612ab3576040519150601f19603f3d011682016040523d82523d5f602084013e612ab8565b606091505b5091509150818015612acc57506020815110155b8015610e02575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612b0a9083016020908101908401614702565b149695505050505050565b5f816005811115612b2857612b28613e78565b03612b305750565b6001816005811115612b4457612b44613e78565b03612b7b576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612b8f57612b8f613e78565b03612bc6576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612bda57612bda613e78565b03612c11576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612c2557612c25613e78565b03612c5c576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612c7057612c70613e78565b03612ca7576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680612cec636322c962426146ef565b612cf69190614732565b610d9e906001614a84565b5f612d0b82614a97565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167f3a5762d300000000000000000000000000000000000000000000000000000000148015612d615750600481145b158015612dbc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f49a45dfb00000000000000000000000000000000000000000000000000000000148015612dba5750600481145b155b8015612e1657507fffffffff0000000000000000000000000000000000000000000000000000000082167fc9167e6c00000000000000000000000000000000000000000000000000000000148015612e145750604481145b155b8015612e7057507fffffffff0000000000000000000000000000000000000000000000000000000082167f53b0bbfd00000000000000000000000000000000000000000000000000000000148015612e6e5750602481145b155b8015612eca57507fffffffff0000000000000000000000000000000000000000000000000000000082167f086f7d6500000000000000000000000000000000000000000000000000000000148015612ec85750602481145b155b15611f7d576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612f0c8383613728565b5f81815260016020526040902080549192509061ffff848116911614612f35575f915050611204565b6004612f4083610fcd565b6007811115612f5157612f51613e78565b14612f5f575f915050611204565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612fbc9084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612feb9190614a69565b5f604051808303815f865af19150503d805f8114613024576040519150601f19603f3d011682016040523d82523d5f602084013e613029565b606091505b50915091508161306757806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401611b00919061386d565b50505092915050565b5f805f808973ffffffffffffffffffffffffffffffffffffffff1663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e191906146bd565b90505f8973ffffffffffffffffffffffffffffffffffffffff1663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561312d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315191906146bd565b6040517f1af0131c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152808316602483015261ffff8a166044830152919250908d1690631af0131c906064016020604051808303815f875af11580156131d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f691906146bd565b6040517f8489e17900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015280831660248301528a811660448301526064820189905265048c273950006084830152919550908b1690638489e1799060a4016020604051808303815f875af1158015613288573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ac91906146bd565b94508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613333576040517fa20b5bb900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015286166024820152604401611b00565b6040517fd9181cd300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152868116602483015289811660448301528c169063d9181cd3906064016020604051808303815f875af11580156133ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d291906146bd565b92508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613459576040517f3d454c1c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015284166024820152604401611b00565b50509750975097945050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561349d5750600390505f61356c565b8460ff16601b141580156134b557508460ff16601c14155b156134c55750600490505f61356c565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015613515573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615613563575f81613567565b60015f5b915091505b94509492505050565b835f036135ae576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615613617576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff16600181111561368357613683613e78565b600181111561369457613694613e78565b036136b5575f838152600160208190526040909120018054850190556136cc565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4848487856040516124709493929190614ae6565b5f80613722611da7565b01905090565b5f82823060405160200161373e93929190614b0d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f8082516041146137915750600290505f6137b8565b6020830151604084015160608501515f1a91906137b087848484613468565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137fa5760056112a8565b505f92915050565b5f5b8381101561381c578181015183820152602001613804565b50505f910152565b5f815180845261383b816020860160208601613802565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6112a86020830184613824565b61ffff81168114610cb9575f80fd5b5f6020828403121561389e575f80fd5b81356112a88161387f565b73ffffffffffffffffffffffffffffffffffffffff81168114610cb9575f80fd5b5f8083601f8401126138da575f80fd5b50813567ffffffffffffffff8111156138f1575f80fd5b6020830191508360208260051b85010111156137b8575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561397f5761397f61390b565b604052919050565b5f82601f830112613996575f80fd5b813567ffffffffffffffff8111156139b0576139b061390b565b6139e160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613938565b8181528460208386010111156139f5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613a26575f80fd5b8635613a31816138a9565b9550602087013567ffffffffffffffff80821115613a4d575f80fd5b613a598a838b016138ca565b90975095506040890135915080821115613a71575f80fd5b613a7d8a838b016138ca565b90955093506060890135915080821115613a95575f80fd5b50613aa289828a01613987565b9150509295509295509295565b5f60208284031215613abf575f80fd5b5035919050565b5f805f805f8060608789031215613adb575f80fd5b863567ffffffffffffffff80821115613af2575f80fd5b613afe8a838b016138ca565b90985096506020890135915080821115613b16575f80fd5b613b228a838b016138ca565b90965094506040890135915080821115613b3a575f80fd5b50613b4789828a016138ca565b979a9699509497509295939492505050565b5f67ffffffffffffffff821115613b7257613b7261390b565b5060051b60200190565b5f82601f830112613b8b575f80fd5b81356020613ba0613b9b83613b59565b613938565b8083825260208201915060208460051b870101935086841115613bc1575f80fd5b602086015b84811015613be6578035613bd9816138a9565b8352918301918301613bc6565b509695505050505050565b5f82601f830112613c00575f80fd5b81356020613c10613b9b83613b59565b8083825260208201915060208460051b870101935086841115613c31575f80fd5b602086015b84811015613be65780358352918301918301613c36565b5f82601f830112613c5c575f80fd5b81356020613c6c613b9b83613b59565b82815260059290921b84018101918181019086841115613c8a575f80fd5b8286015b84811015613be657803567ffffffffffffffff811115613cac575f80fd5b613cba8986838b0101613987565b845250918301918301613c8e565b5f805f8060808587031215613cdb575f80fd5b843567ffffffffffffffff80821115613cf2575f80fd5b613cfe88838901613b7c565b95506020870135915080821115613d13575f80fd5b613d1f88838901613bf1565b94506040870135915080821115613d34575f80fd5b50613d4187828801613c4d565b949793965093946060013593505050565b5f805f805f805f8060a0898b031215613d69575f80fd5b8835613d74816138a9565b9750602089013567ffffffffffffffff80821115613d90575f80fd5b613d9c8c838d016138ca565b909950975060408b0135915080821115613db4575f80fd5b613dc08c838d016138ca565b909750955060608b0135915080821115613dd8575f80fd5b613de48c838d016138ca565b909550935060808b0135915080821115613dfc575f80fd5b50613e098b828c01613987565b9150509295985092959890939650565b803560ff81168114613e29575f80fd5b919050565b5f805f805f60a08688031215613e42575f80fd5b85359450613e5260208701613e19565b9350613e6060408701613e19565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60088110613eda577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b602081016112048284613ea5565b5f8060408385031215613efd575f80fd5b823591506020830135613f0f816138a9565b809150509250929050565b5f60208284031215613f2a575f80fd5b813567ffffffffffffffff811115613f40575f80fd5b6121a584828501613987565b5f8060408385031215613f5d575f80fd5b82359150613f6d60208401613e19565b90509250929050565b5f805f8060808587031215613f89575f80fd5b8435613f94816138a9565b935060208501359250613fa960408601613e19565b9150606085013567ffffffffffffffff811115613fc4575f80fd5b613fd087828801613987565b91505092959194509250565b5f805f8060408587031215613fef575f80fd5b843567ffffffffffffffff80821115614006575f80fd5b614012888389016138ca565b9096509450602087013591508082111561402a575f80fd5b50614037878288016138ca565b95989497509550505050565b5f60208284031215614053575f80fd5b81356112a8816138a9565b5f8083601f84011261406e575f80fd5b50813567ffffffffffffffff811115614085575f80fd5b6020830191508360208285010111156137b8575f80fd5b5f805f80606085870312156140af575f80fd5b843593506140bf60208601613e19565b9250604085013567ffffffffffffffff8111156140da575f80fd5b6140378782880161405e565b5f805f80608085870312156140f9575f80fd5b843567ffffffffffffffff80821115614110575f80fd5b61411c88838901613b7c565b95506020870135915080821115614131575f80fd5b61413d88838901613bf1565b94506040870135915080821115614152575f80fd5b61415e88838901613c4d565b93506060870135915080821115614173575f80fd5b50613fd087828801613987565b5f815180845260208085019450602084015f5b838110156141af57815187529582019590820190600101614193565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6141f460e0830189613824565b82810360408401526142068189613824565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c08401526116488185614180565b5f805f805f805f60a0888a031215614258575f80fd5b873567ffffffffffffffff8082111561426f575f80fd5b61427b8b838c016138ca565b909950975060208a0135915080821115614293575f80fd5b506142a08a828b016138ca565b90965094506142b3905060408901613e19565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c0312156142e7575f80fd5b893567ffffffffffffffff808211156142fe575f80fd5b61430a8d838e016138ca565b909b50995060208c0135915080821115614322575f80fd5b61432e8d838e016138ca565b909950975060408c0135915080821115614346575f80fd5b506143538c828d016138ca565b9096509450614366905060608b01613e19565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a08789031215614398575f80fd5b86356143a3816138a9565b9550602087013594506143b860408801613e19565b9350606087013567ffffffffffffffff808211156143d4575f80fd5b6143e08a838b0161405e565b90955093506080890135915080821115613a95575f80fd5b65ffffffffffff898116825288166020820152610100810161441d6040830189613ea5565b6060820196909652608081019490945273ffffffffffffffffffffffffffffffffffffffff9290921660a084015260c083015261ffff1660e0909101529392505050565b5f8060408385031215614472575f80fd5b823561447d816138a9565b946020939093013593505050565b5f805f805f805f60c0888a0312156144a1575f80fd5b873596506144b160208901613e19565b9550604088013567ffffffffffffffff8111156144cc575f80fd5b6144d88a828b0161405e565b90965094506144eb905060608901613e19565b92506080880135915060a0880135905092959891949750929550565b600181811c9082168061451b57607f821691505b602082108103614552577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614585575f80fd5b8260051b80858437919091019392505050565b5f8184825b858110156145c65760ff6145b083613e19565b168352602092830192919091019060010161459d565b509095945050505050565b5f6145de613b9b84613b59565b80848252602080830192508560051b8501368111156145fb575f80fd5b855b8181101561463557803567ffffffffffffffff81111561461b575f80fd5b61462736828a01613987565b8652509382019382016145fd565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8281168282160390808211156146b6576146b661466e565b5092915050565b5f602082840312156146cd575f80fd5b81516112a8816138a9565b80820281158282048414176112045761120461466e565b818103818111156112045761120461466e565b5f60208284031215614712575f80fd5b5051919050565b5f60208284031215614729575f80fd5b6112a882613e19565b5f82614765577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261479d575f80fd5b83018035915067ffffffffffffffff8211156147b7575f80fd5b6020019150368190038213156137b8575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b83811015614803578151855293820193908201906001016147e7565b50929695505050505050565b5f8083545f60018260011c9150600183168061482c57607f831692505b60208084108203614864577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561487857600181146148ab576148d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506148d6565b5f8a8152602090205f5b868110156148ce5781548b8201529085019083016148b5565b505084890196505b509498975050505050505050565b5f602082840312156148f4575f80fd5b81516112a88161387f565b5f8282518085526020808601955060208260051b840101602086015f5b84811015614968577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614956838351613824565b9884019892509083019060010161491c565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b818110156149d95784518316865294830194938301936001016149bb565b505050505082810360608401526149f0818a614180565b90508281036080840152614a0481896148ff565b905082810360a0840152614a1881886148ff565b61ffff871660c0850152905061ffff851660e0840152828103610100840152614a418185613824565b9c9b505050505050505050505050565b828152604060208201525f6121a56040830184613824565b5f8251614a7a818460208701613802565b9190910192915050565b808201808211156112045761120461466e565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015614ade5780818460040360031b1b83161693505b505050919050565b84815260ff84166020820152826040820152608060608201525f610e026080830184613824565b606081525f614b1f6060830186613824565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff8316604083015294935050505056fe737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d71756f72756d6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a2646970667358221220cb1558f750317081ff7d74cc6ccf95ac1228e824c87603b13e26f9ebd7e5909a64736f6c63430008170033" } +{ "bytecode": "0x61014060405234801562000011575f80fd5b506040516200577a3803806200577a83398101604081905262000034916200072b565b60408051808201909152600c81526b2d32b937a3b7bb32b93737b960a11b602082015289838282815f62000069828262000911565b5046608052620000786200026e565b60a052506001600160a01b03811660c0819052620000a9576040516316d3e4a360e01b815260040160405180910390fd5b50620000b79050816200030a565b5050506001600160a01b03881660e0819052620000e757604051635788a27960e11b815260040160405180910390fd5b6001600160a01b0387166101008190526200011557604051631412fc3f60e11b815260040160405180910390fd5b6001600160a01b03861661012081905262000143576040516333927a8160e21b815260040160405180910390fd5b80515f0362000165576040516311596cb960e01b815260040160405180910390fd5b5f5b8151811015620001ef575f828281518110620001875762000187620009dd565b602002602001015190505f6001600160a01b0316816001600160a01b031603620001c457604051634e71231360e11b815260040160405180910390fd5b6001600160a01b03165f908152600460205260409020805460ff191660019081179091550162000167565b507f786ba9170c247d41ad3b2f65513f754efd3172b40b4063d70c2cf5fdde4cb83981604051620002219190620009f1565b60405180910390a16200025c88888888855f81518110620002465762000246620009dd565b6020026020010151888a620003ea60201b60201c565b50505050505050505050505062000adc565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620002a2919062000a3f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127108161ffff16118062000324575061010f61ffff8216105b156200035e5760405163073543c360e31b815261ffff8216600482015261010f602482015261271060448201526064015b60405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a16003805461ffff191661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b5f805f80896001600160a01b031663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000451919062000ab9565b90505f896001600160a01b031663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000491573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004b7919062000ab9565b6040516306bc04c760e21b81526001600160a01b038481166004830152808316602483015261ffff8a166044830152919250908d1690631af0131c906064016020604051808303815f875af115801562000513573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000539919062000ab9565b604051638489e17960e01b81526001600160a01b03848116600483015280831660248301528a811660448301526064820189905265048c273950006084830152919550908b1690638489e1799060a4016020604051808303815f875af1158015620005a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005cc919062000ab9565b9450846001600160a01b0316816001600160a01b031614620006155760405163a20b5bb960e01b81526001600160a01b0380831660048301528616602482015260440162000355565b60405163d9181cd360e01b81526001600160a01b038a81166004830152868116602483015289811660448301528c169063d9181cd3906064016020604051808303815f875af11580156200066b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000691919062000ab9565b9250826001600160a01b0316826001600160a01b031614620006da57604051630f51530760e21b81526001600160a01b0380841660048301528416602482015260440162000355565b50509750975097945050505050565b80516001600160a01b038116811462000700575f80fd5b919050565b805161ffff8116811462000700575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f805f805f6101208a8c03121562000745575f80fd5b620007508a620006e9565b98506200076060208b01620006e9565b97506200077060408b01620006e9565b96506200078060608b01620006e9565b95506200079060808b01620006e9565b945060a08a01519350620007a760c08b0162000705565b9250620007b760e08b0162000705565b6101008b01519092506001600160401b0380821115620007d5575f80fd5b818c0191508c601f830112620007e9575f80fd5b815181811115620007fe57620007fe62000717565b8060051b604051601f19603f8301168101818110858211171562000826576200082662000717565b6040529182526020808301935084820101918f83111562000845575f80fd5b6020850194505b8285101562000872576200086085620006e9565b8452602094850194909301926200084c565b80955050505050509295985092959850929598565b600181811c908216806200089c57607f821691505b602082108103620008bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200090c57805f5260205f20601f840160051c81016020851015620008e85750805b601f840160051c820191505b8181101562000909575f8155600101620008f4565b50505b505050565b81516001600160401b038111156200092d576200092d62000717565b62000945816200093e845462000887565b84620008c1565b602080601f8311600181146200097b575f8415620009635750858301515b5f19600386901b1c1916600185901b178555620009d5565b5f85815260208120601f198616915b82811015620009ab578886015182559484019460019091019084016200098a565b5085821015620009c957878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f9190848201906040850190845b8181101562000a335783516001600160a01b03168352928401929184019160010162000a0c565b50909695505050505050565b5f80835462000a4e8162000887565b6001828116801562000a69576001811462000a7f5762000aad565b60ff198416875282151583028701945062000aad565b875f526020805f205f5b8581101562000aa45781548a82015290840190820162000a89565b50505082870194505b50929695505050505050565b5f6020828403121562000aca575f80fd5b62000ad582620006e9565b9392505050565b60805160a05160c05160e0516101005161012051614c1762000b635f395f8181610b330152818161116f015261229c01525f8181610964015261227b01525f81816106e7015281816119c3015261225a01525f818161049101528181610be80152818161113e0152818161195501526125c901525f610eef01525f610ebf0152614c175ff3fe608060405260043610610387575f3560e01c80637b3c71d3116101d3578063c2ee3a08116100fd578063dd4e2ba51161009d578063f046c6461161006d578063f046c64614610b74578063f52c93c514610ba7578063fb999fcb14610bbb578063fc0c546a14610bda575f80fd5b8063dd4e2ba514610adb578063deaaa7cc14610aef578063e94bb22314610b22578063eb9019d414610b55575f80fd5b8063c7f758a8116100d8578063c7f758a814610a37578063c9167e6c14610a6a578063cee8770814610a89578063d11d19c214610aa8575f80fd5b8063c2ee3a08146109e4578063c59057e4146109f9578063c64d2ee614610a18575f80fd5b806396ccd67311610173578063af63a3e111610143578063af63a3e114610953578063b58131b014610986578063c01f9e3714610998578063c0324da1146109b7575f80fd5b806396ccd673146108e957806397c3d334146109085780639b9e9cf81461091c578063a7713a701461093b575f80fd5b806384b0196e116101ae57806384b0196e146108455780638968eb071461086c5780638e9d8c341461088b57806391ddadf4146108be575f80fd5b80637b3c71d3146107e85780637d5e81e214610807578063849a83b414610826575f80fd5b80633e4f49e6116102b4578063544ffc9c116102545780635b18c26a116102245780635b18c26a1461074757806364a38bf91461076657806370edcbc41461078557806377750fde146107a4575f80fd5b8063544ffc9c146106815780635548917f146106d657806355a73c53146107095780635678138814610728575f80fd5b80634bf5d7e91161028f5780634bf5d7e91461061b5780634d6d74411461062f5780634d8e08251461064357806353b0bbfd14610662575f80fd5b80633e4f49e61461059257806343859632146105be57806349a45dfb14610607575f80fd5b806324b2c7b31161032a5780633644e515116102fa5780633644e515146105375780633932abb11461054b5780633a5762d31461055f5780633bccf4fd14610573575f80fd5b806324b2c7b3146104c75780632656227d146104e65780632d63f693146104f95780633071712914610518575f80fd5b80630dd320e9116103655780630dd320e9146103f4578063143489d014610413578063160d66ae146104805780631703a018146104b3575f80fd5b806302a251a31461038b57806306fdde03146103b2578063086f7d65146103d3575b5f80fd5b348015610396575f80fd5b5061039f610c0c565b6040519081526020015b60405180910390f35b3480156103bd575f80fd5b506103c6610c19565b6040516103a9919061386d565b3480156103de575f80fd5b506103f26103ed36600461388e565b610ca8565b005b3480156103ff575f80fd5b5061039f61040e366004613a11565b610cbc565b34801561041e575f80fd5b5061045b61042d366004613aaf565b5f908152600160205260409020546301000000900473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103a9565b34801561048b575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104be575f80fd5b5061039f610d86565b3480156104d2575f80fd5b5061039f6104e1366004613ac6565b610da3565b61039f6104f4366004613cc8565b610dbb565b348015610504575f80fd5b5061039f610513366004613aaf565b610e0c565b348015610523575f80fd5b5061039f610532366004613d52565b610e34565b348015610542575f80fd5b5061039f610ebc565b348015610556575f80fd5b5061039f610f11565b34801561056a575f80fd5b506103f2610f18565b34801561057e575f80fd5b5061039f61058d366004613e2e565b610f9e565b34801561059d575f80fd5b506105b16105ac366004613aaf565b610fcd565b6040516103a99190613ede565b3480156105c9575f80fd5b506105f76105d8366004613eec565b600260209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016103a9565b348015610612575f80fd5b506103f2611131565b348015610626575f80fd5b506103c6611162565b34801561063a575f80fd5b5061045b61116c565b34801561064e575f80fd5b5061039f61065d366004613f1a565b6111fa565b34801561066d575f80fd5b506103f261067c36600461388e565b61120a565b34801561068c575f80fd5b506106bb61069b366004613aaf565b5f8181526001602081905260408220908101546002909101549093909250565b604080519384526020840192909252908201526060016103a9565b3480156106e1575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610714575f80fd5b5061039f610723366004613f4c565b61129d565b348015610733575f80fd5b5061039f610742366004613f4c565b6112af565b348015610752575f80fd5b5061039f610761366004613f76565b6112ca565b348015610771575f80fd5b5061039f610780366004613fdc565b6112fc565b348015610790575f80fd5b5061039f61079f366004613fdc565b61131e565b3480156107af575f80fd5b506105f76107be366004614043565b73ffffffffffffffffffffffffffffffffffffffff165f9081526004602052604090205460ff1690565b3480156107f3575f80fd5b5061039f61080236600461409c565b61135e565b348015610812575f80fd5b5061039f6108213660046140e6565b6113a0565b348015610831575f80fd5b5061039f610840366004613ac6565b6113b7565b348015610850575f80fd5b50610859611417565b6040516103a997969594939291906141ba565b348015610877575f80fd5b5061039f610886366004614242565b61154f565b348015610896575f80fd5b5061039f7fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc481565b3480156108c9575f80fd5b506108d26115be565b60405165ffffffffffff90911681526020016103a9565b3480156108f4575f80fd5b5061039f61090336600461409c565b6115c7565b348015610913575f80fd5b5061271061039f565b348015610927575f80fd5b5061039f6109363660046142cf565b6115d4565b348015610946575f80fd5b5060035461ffff1661039f565b34801561095e575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610991575f80fd5b505f61039f565b3480156109a3575f80fd5b5061039f6109b2366004613aaf565b611656565b3480156109c2575f80fd5b506003546109d19061ffff1681565b60405161ffff90911681526020016103a9565b3480156109ef575f80fd5b5061039f61271081565b348015610a04575f80fd5b5061039f610a13366004613cc8565b611670565b348015610a23575f80fd5b5061039f610a32366004614383565b611693565b348015610a42575f80fd5b50610a56610a51366004613aaf565b6116e5565b6040516103a99897969594939291906143f8565b348015610a75575f80fd5b506103f2610a84366004614461565b6117a0565b348015610a94575f80fd5b5061039f610aa336600461448b565b611897565b348015610ab3575f80fd5b5061039f7f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c81565b348015610ae6575f80fd5b506103c66118e7565b348015610afa575f80fd5b5061039f7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b2d575f80fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b60575f80fd5b5061039f610b6f366004614461565b611907565b348015610b7f575f80fd5b5061039f7f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f81565b348015610bb2575f80fd5b5061045b6119c0565b348015610bc6575f80fd5b5061039f610bd5366004613aaf565b611a2a565b348015610be5575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061045b565b5f60015b61ffff16905090565b60605f8054610c2790614507565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5390614507565b8015610c9e5780601f10610c7557610100808354040283529160200191610c9e565b820191905f5260205f20905b815481529060010190602001808311610c8157829003601f168201915b5050505050905090565b610cb0611a65565b610cb981611a9e565b50565b5f610d2187610d1b8888604051602001610cd7929190614558565b604051602081830303815290604052805190602001208787604051602001610d00929190614598565b60405160208183030381529060405280519060200120611bb2565b84611c0e565b610d7b87878787878267ffffffffffffffff811115610d4257610d4261390b565b604051908082528060200260200182016040528015610d7557816020015b6060815260200190600190039081610d605790505b50611c5f565b979650505050505050565b5f610d9e610d92611da7565b60035461ffff16611db0565b905090565b5f610d7b3388888888610db6888a6145d1565b611c5f565b5f610dc7858585611dda565b5f610dd0611da7565b9050610e02845f81518110610de757610de7614641565b602002602001015182600184610dfd919061469b565b611f82565b9695505050505050565b5f818152600160208190526040822054610e2a919061ffff1661469b565b61ffff1692915050565b5f610e9d89610d1b8a8a604051602001610e4f929190614558565b604051602081830303815290604052805190602001208989604051602001610e78929190614598565b60405160208183030381529060405280519060200120610e988989612076565b612159565b610eaf8989898989610db6898b6145d1565b9998505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610eec57610d9e6121ad565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610c10565b610f20611a65565b610f9c610f2b61116c565b73ffffffffffffffffffffffffffffffffffffffff1663160d66ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9791906146bd565b612247565b565b5f610e02610fb7610faf888861247f565b8686866124c6565b878760405180602001604052805f8152506124ea565b5f818152600160205260408120805462010000900460ff1615610ff35750600792915050565b805461ffff165f819003611033576040517fd9c78e0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61104761104260018461469b565b612595565b90505f6001830161ffff1661105a611da7565b61ffff1611159050815f036110815780611075576006610e02565b60019695505050505050565b835477010000000000000000000000000000000000000000000000900461ffff166110ac83826146d8565b61271086600201546110be91906146d8565b106110dc57816110cf576006610d7b565b6004979650505050505050565b6110ea8361ffff83166146d8565b6127108660010154856110fd91906146ef565b61110791906146d8565b101580156111125750815b15611124575060019695505050505050565b5060039695505050505050565b611139611a65565b610f9c7f0000000000000000000000000000000000000000000000000000000000000000612247565b6060610d9e612647565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9e91906146bd565b5f61120482612667565b92915050565b611212611a65565b61121a6119c0565b6040517f94eac99500000000000000000000000000000000000000000000000000000000815261ffff8316600482015273ffffffffffffffffffffffffffffffffffffffff91909116906394eac995906024015f604051808303815f87803b158015611284575f80fd5b505af1158015611296573d5f803e3d5ffd5b5050505050565b5f6112a8838361247f565b9392505050565b5f6112a833848460405180602001604052805f8152506124ea565b5f6112d985610d1b868661247f565b6112f385858560405180602001604052805f8152506124ea565b95945050505050565b5f6112f333868686868267ffffffffffffffff811115610d4257610d4261390b565b5f6112f38585604051602001611335929190614558565b604051602081830303815290604052805190602001208484604051602001610d00929190614598565b5f6112f333868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124ea92505050565b5f6113ad85858585612679565b5095945050505050565b5f610d7b87876040516020016113ce929190614558565b6040516020818303038152906040528051906020012086866040516020016113f7929190614598565b60405160208183030381529060405280519060200120610e988686612076565b5f60608082808083814630828060405190808252806020026020018201604052801561144d578160200160208202803683370190505b507f0f00000000000000000000000000000000000000000000000000000000000000949392919084805461148090614507565b80601f01602080910402602001604051908101604052809291908181526020018280546114ac90614507565b80156114f75780601f106114ce576101008083540402835291602001916114f7565b820191905f5260205f20905b8154815290600101906020018083116114da57829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b5f6115b2611595610faf8a8a60405160200161156c929190614558565b604051602081830303815290604052805190602001208989604051602001610d00929190614598565b898989898267ffffffffffffffff811115610d4257610d4261390b565b98975050505050505050565b5f610c10611da7565b5f6112f3858585856128c8565b5f61164861163a610faf8c8c6040516020016115f1929190614558565b604051602081830303815290604052805190602001208b8b60405160200161161a929190614598565b60405160208183030381529060405280519060200120610e988b8b612076565b8b8b8b8b610db68b8d6145d1565b9a9950505050505050505050565b5f81815260016020819052604082205461ffff1601610e2a565b5f6112f3835f8151811061168657611686614641565b6020026020010151612667565b5f6116a487610d1b888888886128c8565b610d7b87878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124ea92505050565b5f818152600160205260408120805461ffff1691908190819081908190819081906117108960010190565b61ffff16975061171f8a610fcd565b600182015460028301548354929950909750955073ffffffffffffffffffffffffffffffffffffffff6301000000820416945061177e9061ffff8082169177010000000000000000000000000000000000000000000000900416611db0565b9250805f0160179054906101000a900461ffff16915050919395975091939597565b6117a8611a65565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526004602052604090205460ff16611806576040517f23b3ddc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61180e61116c565b6040517fc9167e6c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063c9167e6c906044015f604051808303815f87803b15801561187d575f80fd5b505af115801561188f573d5f803e3d5ffd5b505050505050565b5f6115b26118aa610faf8a8a8a8a6128c8565b898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124ea92505050565b60606040518060600160405280602d8152602001614bb5602d9139905090565b6040517f3a46b1a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690633a46b1a890604401602060405180830381865afa15801561199c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a89190614702565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d6573d5f803e3d5ffd5b5f81815260016020526040812080546112a89061ffff8082169177010000000000000000000000000000000000000000000000900416611db0565b333014610f9c576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108161ffff161180611ab7575061010f61ffff8216105b15611b09576040517f39aa1e1800000000000000000000000000000000000000000000000000000000815261ffff8216600482015261010f602482015261271060448201526064015b60405180910390fd5b6003546040805161ffff928316815291831660208301527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527fcae6f683fe1ab8ec2737e8d7cc5b306931ad2c39aa1701b65b3e4d9492bffa649060200160405180910390a150565b604080517f9a121fc10d6025acfc09275f9709796b68831733b5bbac0d510d13f85b1b730f6020820152908101839052606081018290525f906112a8906080015b60405160208183030381529060405280519060200120612932565b5f611c1a848484612993565b90505f816005811115611c2f57611c2f613e78565b03611c3a5750505050565b611c458484846129cd565b15611c505750505050565b611c5981612b15565b50505050565b5f84808203611c9a576040517f75672da700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808414611cdd576040517ffa5dbe080000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401611b00565b82518114611d245782516040517ffa5dbe08000000000000000000000000000000000000000000000000000000008152611b00918391600401918252602082015260400190565b5f5b81811015611d9b57611d9189898984818110611d4457611d44614641565b90506020020135888885818110611d5d57611d5d614641565b9050602002016020810190611d729190614719565b878581518110611d8457611d84614641565b60200260200101516124ea565b9250600101611d26565b50509695505050505050565b5f610d9e612cd9565b5f612710611dc261104260018661469b565b611dd09061ffff85166146d8565b6112a89190614732565b8251600114611e15576040517f83913ab500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16835f81518110611e3e57611e3e614641565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600114611ece576040517f32143ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f81518110611ee057611ee0614641565b60200260200101515f14611f20576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600114611f5b576040517fc569313f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f7d815f81518110611f7057611f70614641565b6020026020010151612d01565b505050565b5f3415611fbb576040517faa7feadc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff165f03611ff8576040517f0797d96900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1610612044577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192612036908590612f01565b9050805f036112a857611ff8565b6040517fb696436000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81818167ffffffffffffffff8111156120925761209261390b565b6040519080825280602002602001820160405280156120bb578160200160208202803683370190505b5090505f5b82811015612127578585828181106120da576120da614641565b90506020028101906120ec919061476a565b6040516120fa9291906147cb565b604051809103902082828151811061211457612114614641565b60209081029190910101526001016120c0565b508060405160200161213991906147da565b604051602081830303815290604052805190602001209250505092915050565b604080517fa891f76027ef63a24501b9dd3b0c779b49ad26d2328e9d423640209d1ad4fcc4602082015290810184905260608101839052608081018290525f906121a59060a001611bf3565b949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516121df919061480f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f61225061116c565b90505f805f61240f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000888873ffffffffffffffffffffffffffffffffffffffff1663a72246876040518163ffffffff1660e01b8152600401602060405180830381865afa158015612305573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232991906146bd565b6123316119c0565b73ffffffffffffffffffffffffffffffffffffffff1663c0324da16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612379573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061239d91906148e4565b8a73ffffffffffffffffffffffffffffffffffffffff1663c27cabb56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240a9190614702565b613070565b6040805173ffffffffffffffffffffffffffffffffffffffff808616825280851660208301528084169282019290925293965091945092508616907fd4507bf853cb2d7b87ab8c58bf6ad8be37f7ae56ed374ed012d09b9235e59787906060015b60405180910390a25050505050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810183905260ff821660608201525f906112a890608001611bf3565b5f806124d486868686613468565b925090506124e181612b15565b50949350505050565b5f806124f585610fcd565b9050600181600781111561250b5761250b613e78565b1461254457806040517f88f40ea0000000000000000000000000000000000000000000000000000000008152600401611b009190613ede565b5f858152600160205260409020546125869087907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9182160116611907565b91506124e18683878787613575565b6040517f5c7e5d5f00000000000000000000000000000000000000000000000000000000815261ffff821660048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c7e5d5f90602401602060405180830381865afa158015612623573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112049190614702565b60606040518060a0016040528060658152602001614b5060659139905090565b5f61120482612674613718565b613728565b5f80612686868686611dda565b61268e613718565b90506126b3845f815181106126a5576126a5614641565b602002602001015182613728565b5f8181526001602052604090205490925061ffff16156126ff576040517f5c36267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61282882826040805160c08101825261ffff92831681525f6020808301828152338486019081526003548716606086019081526080860185815260a087018681529986526001948590529690942094518554925191519451881677010000000000000000000000000000000000000000000000027fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff96909616630100000002959095167fffffffffffffff00000000000000000000000000000000000000000000ffffff92151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090941691909816179190911716949094171781559051918101919091559051600290910155565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0823388888a5167ffffffffffffffff8111156128675761286761390b565b60405190808252806020026020018201604052801561289a57816020015b60608152602001906001900390816128855790505b508987600181018b6040516128b799989796959493929190614975565b60405180910390a194509492505050565b5f6112f37f7949bd92105c02f48ca245aa185f4a7a4d7185641d59b186ac64abeb44964f0c5f1b868686866040516129019291906147cb565b604051908190038120611bf394939291602001938452602084019290925260ff166040830152606082015260800190565b5f61293b610ebc565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f6129a0858561377b565b90925090505f8260058111156129b8576129b8613e78565b146129c35781610e02565b610e0286826137bf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1685856040516024016129fa929190614a51565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e0000000000000000000000000000000000000000000000000000000017905251612a7b9190614a69565b5f60405180830381855afa9150503d805f8114612ab3576040519150601f19603f3d011682016040523d82523d5f602084013e612ab8565b606091505b5091509150818015612acc57506020815110155b8015610e02575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090612b0a9083016020908101908401614702565b149695505050505050565b5f816005811115612b2857612b28613e78565b03612b305750565b6001816005811115612b4457612b44613e78565b03612b7b576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816005811115612b8f57612b8f613e78565b03612bc6576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003816005811115612bda57612bda613e78565b03612c11576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004816005811115612c2557612c25613e78565b03612c5c576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005816005811115612c7057612c70613e78565b03612ca7576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6213c680612cec63661bd350426146ef565b612cf69190614732565b610d9e906001614a84565b5f612d0b82614a97565b82519091507fffffffff0000000000000000000000000000000000000000000000000000000082167f3a5762d300000000000000000000000000000000000000000000000000000000148015612d615750600481145b158015612dbc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f49a45dfb00000000000000000000000000000000000000000000000000000000148015612dba5750600481145b155b8015612e1657507fffffffff0000000000000000000000000000000000000000000000000000000082167fc9167e6c00000000000000000000000000000000000000000000000000000000148015612e145750604481145b155b8015612e7057507fffffffff0000000000000000000000000000000000000000000000000000000082167f53b0bbfd00000000000000000000000000000000000000000000000000000000148015612e6e5750602481145b155b8015612eca57507fffffffff0000000000000000000000000000000000000000000000000000000082167f086f7d6500000000000000000000000000000000000000000000000000000000148015612ec85750602481145b155b15611f7d576040517f1c49f4d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612f0c8383613728565b5f81815260016020526040902080549192509061ffff848116911614612f35575f915050611204565b6004612f4083610fcd565b6007811115612f5157612f51613e78565b14612f5f575f915050611204565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100001781556040517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90612fbc9084815260200190565b60405180910390a15f803073ffffffffffffffffffffffffffffffffffffffff1686604051612feb9190614a69565b5f604051808303815f865af19150503d805f8114613024576040519150601f19603f3d011682016040523d82523d5f602084013e613029565b606091505b50915091508161306757806040517f15fcd675000000000000000000000000000000000000000000000000000000008152600401611b00919061386d565b50505092915050565b5f805f808973ffffffffffffffffffffffffffffffffffffffff1663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e191906146bd565b90505f8973ffffffffffffffffffffffffffffffffffffffff1663777f14d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561312d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315191906146bd565b6040517f1af0131c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152808316602483015261ffff8a166044830152919250908d1690631af0131c906064016020604051808303815f875af11580156131d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f691906146bd565b6040517f8489e17900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015280831660248301528a811660448301526064820189905265048c273950006084830152919550908b1690638489e1799060a4016020604051808303815f875af1158015613288573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ac91906146bd565b94508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613333576040517fa20b5bb900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015286166024820152604401611b00565b6040517fd9181cd300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152868116602483015289811660448301528c169063d9181cd3906064016020604051808303815f875af11580156133ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d291906146bd565b92508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613459576040517f3d454c1c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015284166024820152604401611b00565b50509750975097945050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561349d5750600390505f61356c565b8460ff16601b141580156134b557508460ff16601c14155b156134c55750600490505f61356c565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015613515573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615613563575f81613567565b60015f5b915091505b94509492505050565b835f036135ae576040517f8791239e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845290915290205460ff1615613617576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558260ff16600181111561368357613683613e78565b600181111561369457613694613e78565b036136b5575f838152600160208190526040909120018054850190556136cc565b5f8381526001602052604090206002018054850190555b8473ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4848487856040516124709493929190614ae6565b5f80613722611da7565b01905090565b5f82823060405160200161373e93929190614b0d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b5f8082516041146137915750600290505f6137b8565b6020830151604084015160608501515f1a91906137b087848484613468565b945094505050505b9250929050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137fa5760056112a8565b505f92915050565b5f5b8381101561381c578181015183820152602001613804565b50505f910152565b5f815180845261383b816020860160208601613802565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6112a86020830184613824565b61ffff81168114610cb9575f80fd5b5f6020828403121561389e575f80fd5b81356112a88161387f565b73ffffffffffffffffffffffffffffffffffffffff81168114610cb9575f80fd5b5f8083601f8401126138da575f80fd5b50813567ffffffffffffffff8111156138f1575f80fd5b6020830191508360208260051b85010111156137b8575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561397f5761397f61390b565b604052919050565b5f82601f830112613996575f80fd5b813567ffffffffffffffff8111156139b0576139b061390b565b6139e160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613938565b8181528460208386010111156139f5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f8060808789031215613a26575f80fd5b8635613a31816138a9565b9550602087013567ffffffffffffffff80821115613a4d575f80fd5b613a598a838b016138ca565b90975095506040890135915080821115613a71575f80fd5b613a7d8a838b016138ca565b90955093506060890135915080821115613a95575f80fd5b50613aa289828a01613987565b9150509295509295509295565b5f60208284031215613abf575f80fd5b5035919050565b5f805f805f8060608789031215613adb575f80fd5b863567ffffffffffffffff80821115613af2575f80fd5b613afe8a838b016138ca565b90985096506020890135915080821115613b16575f80fd5b613b228a838b016138ca565b90965094506040890135915080821115613b3a575f80fd5b50613b4789828a016138ca565b979a9699509497509295939492505050565b5f67ffffffffffffffff821115613b7257613b7261390b565b5060051b60200190565b5f82601f830112613b8b575f80fd5b81356020613ba0613b9b83613b59565b613938565b8083825260208201915060208460051b870101935086841115613bc1575f80fd5b602086015b84811015613be6578035613bd9816138a9565b8352918301918301613bc6565b509695505050505050565b5f82601f830112613c00575f80fd5b81356020613c10613b9b83613b59565b8083825260208201915060208460051b870101935086841115613c31575f80fd5b602086015b84811015613be65780358352918301918301613c36565b5f82601f830112613c5c575f80fd5b81356020613c6c613b9b83613b59565b82815260059290921b84018101918181019086841115613c8a575f80fd5b8286015b84811015613be657803567ffffffffffffffff811115613cac575f80fd5b613cba8986838b0101613987565b845250918301918301613c8e565b5f805f8060808587031215613cdb575f80fd5b843567ffffffffffffffff80821115613cf2575f80fd5b613cfe88838901613b7c565b95506020870135915080821115613d13575f80fd5b613d1f88838901613bf1565b94506040870135915080821115613d34575f80fd5b50613d4187828801613c4d565b949793965093946060013593505050565b5f805f805f805f8060a0898b031215613d69575f80fd5b8835613d74816138a9565b9750602089013567ffffffffffffffff80821115613d90575f80fd5b613d9c8c838d016138ca565b909950975060408b0135915080821115613db4575f80fd5b613dc08c838d016138ca565b909750955060608b0135915080821115613dd8575f80fd5b613de48c838d016138ca565b909550935060808b0135915080821115613dfc575f80fd5b50613e098b828c01613987565b9150509295985092959890939650565b803560ff81168114613e29575f80fd5b919050565b5f805f805f60a08688031215613e42575f80fd5b85359450613e5260208701613e19565b9350613e6060408701613e19565b94979396509394606081013594506080013592915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60088110613eda577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b602081016112048284613ea5565b5f8060408385031215613efd575f80fd5b823591506020830135613f0f816138a9565b809150509250929050565b5f60208284031215613f2a575f80fd5b813567ffffffffffffffff811115613f40575f80fd5b6121a584828501613987565b5f8060408385031215613f5d575f80fd5b82359150613f6d60208401613e19565b90509250929050565b5f805f8060808587031215613f89575f80fd5b8435613f94816138a9565b935060208501359250613fa960408601613e19565b9150606085013567ffffffffffffffff811115613fc4575f80fd5b613fd087828801613987565b91505092959194509250565b5f805f8060408587031215613fef575f80fd5b843567ffffffffffffffff80821115614006575f80fd5b614012888389016138ca565b9096509450602087013591508082111561402a575f80fd5b50614037878288016138ca565b95989497509550505050565b5f60208284031215614053575f80fd5b81356112a8816138a9565b5f8083601f84011261406e575f80fd5b50813567ffffffffffffffff811115614085575f80fd5b6020830191508360208285010111156137b8575f80fd5b5f805f80606085870312156140af575f80fd5b843593506140bf60208601613e19565b9250604085013567ffffffffffffffff8111156140da575f80fd5b6140378782880161405e565b5f805f80608085870312156140f9575f80fd5b843567ffffffffffffffff80821115614110575f80fd5b61411c88838901613b7c565b95506020870135915080821115614131575f80fd5b61413d88838901613bf1565b94506040870135915080821115614152575f80fd5b61415e88838901613c4d565b93506060870135915080821115614173575f80fd5b50613fd087828801613987565b5f815180845260208085019450602084015f5b838110156141af57815187529582019590820190600101614193565b509495945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6141f460e0830189613824565b82810360408401526142068189613824565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c08401526116488185614180565b5f805f805f805f60a0888a031215614258575f80fd5b873567ffffffffffffffff8082111561426f575f80fd5b61427b8b838c016138ca565b909950975060208a0135915080821115614293575f80fd5b506142a08a828b016138ca565b90965094506142b3905060408901613e19565b9250606088013591506080880135905092959891949750929550565b5f805f805f805f805f60c08a8c0312156142e7575f80fd5b893567ffffffffffffffff808211156142fe575f80fd5b61430a8d838e016138ca565b909b50995060208c0135915080821115614322575f80fd5b61432e8d838e016138ca565b909950975060408c0135915080821115614346575f80fd5b506143538c828d016138ca565b9096509450614366905060608b01613e19565b925060808a0135915060a08a013590509295985092959850929598565b5f805f805f8060a08789031215614398575f80fd5b86356143a3816138a9565b9550602087013594506143b860408801613e19565b9350606087013567ffffffffffffffff808211156143d4575f80fd5b6143e08a838b0161405e565b90955093506080890135915080821115613a95575f80fd5b65ffffffffffff898116825288166020820152610100810161441d6040830189613ea5565b6060820196909652608081019490945273ffffffffffffffffffffffffffffffffffffffff9290921660a084015260c083015261ffff1660e0909101529392505050565b5f8060408385031215614472575f80fd5b823561447d816138a9565b946020939093013593505050565b5f805f805f805f60c0888a0312156144a1575f80fd5b873596506144b160208901613e19565b9550604088013567ffffffffffffffff8111156144cc575f80fd5b6144d88a828b0161405e565b90965094506144eb905060608901613e19565b92506080880135915060a0880135905092959891949750929550565b600181811c9082168061451b57607f821691505b602082108103614552577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614585575f80fd5b8260051b80858437919091019392505050565b5f8184825b858110156145c65760ff6145b083613e19565b168352602092830192919091019060010161459d565b509095945050505050565b5f6145de613b9b84613b59565b80848252602080830192508560051b8501368111156145fb575f80fd5b855b8181101561463557803567ffffffffffffffff81111561461b575f80fd5b61462736828a01613987565b8652509382019382016145fd565b50919695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff8281168282160390808211156146b6576146b661466e565b5092915050565b5f602082840312156146cd575f80fd5b81516112a8816138a9565b80820281158282048414176112045761120461466e565b818103818111156112045761120461466e565b5f60208284031215614712575f80fd5b5051919050565b5f60208284031215614729575f80fd5b6112a882613e19565b5f82614765577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261479d575f80fd5b83018035915067ffffffffffffffff8211156147b7575f80fd5b6020019150368190038213156137b8575f80fd5b818382375f9101908152919050565b81515f9082906020808601845b83811015614803578151855293820193908201906001016147e7565b50929695505050505050565b5f8083545f60018260011c9150600183168061482c57607f831692505b60208084108203614864577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561487857600181146148ab576148d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506148d6565b5f8a8152602090205f5b868110156148ce5781548b8201529085019083016148b5565b505084890196505b509498975050505050505050565b5f602082840312156148f4575f80fd5b81516112a88161387f565b5f8282518085526020808601955060208260051b840101602086015f5b84811015614968577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614956838351613824565b9884019892509083019060010161491c565b5090979650505050505050565b5f6101208083018c8452602073ffffffffffffffffffffffffffffffffffffffff808e1660208701528360408701528293508c518084526101408701945060208e0193505f5b818110156149d95784518316865294830194938301936001016149bb565b505050505082810360608401526149f0818a614180565b90508281036080840152614a0481896148ff565b905082810360a0840152614a1881886148ff565b61ffff871660c0850152905061ffff851660e0840152828103610100840152614a418185613824565b9c9b505050505050505050505050565b828152604060208201525f6121a56040830184613824565b5f8251614a7a818460208701613802565b9190910192915050565b808201808211156112045761120461466e565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015614ade5780818460040360031b1b83161693505b505050919050565b84815260ff84166020820152826040820152608060608201525f610e026080830184613824565b606081525f614b1f6060830186613824565b905061ffff8416602083015273ffffffffffffffffffffffffffffffffffffffff8316604083015294935050505056fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030737570706f72743d616761696e73742c666f722671756f72756d3d666f7226737563636573733d71756f72756da26469706673582212204d141078d20879dc64a1228001a642535bfbebd79aa28464d4808a8703447d3864736f6c63430008170033" } diff --git a/modules/m-core/bytecode/ZeroToken.json b/modules/m-core/bytecode/ZeroToken.json index 46567784..0abd1bf8 100644 --- a/modules/m-core/bytecode/ZeroToken.json +++ b/modules/m-core/bytecode/ZeroToken.json @@ -1 +1 @@ -{ "bytecode": "0x61010060405234801562000011575f80fd5b50604051620040a4380380620040a4833981016040819052620000349162000775565b6040518060400160405280600b81526020016a05a65726f206279204d5e360ac1b815250604051806040016040528060048152602001635a45524f60e01b8152506006828282828080805f90816200008d9190620008d4565b50466080526200009c6200018a565b60a0525060039150620000b290508382620008d4565b5060ff1660c052505050506001600160a01b03841660e08190529050620000ec576040516333927a8160e21b815260040160405180910390fd5b815181518082146200012057604051631f4bb7c160e31b815260048101839052602481018290526044015b60405180910390fd5b5f5b828110156200017e5762000175858281518110620001445762000144620009a0565b6020026020010151858381518110620001615762000161620009a0565b60200260200101516200022660201b60201c565b60010162000122565b50505050505062000ab8565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001be9190620009b4565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6200023182620002e4565b805f0362000256576040516377b8dde360e01b81526004810182905260240162000117565b6040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f620002a2826200031b565b9050620002af8162000349565b620002bb838262000362565b620002df620002d884620002ce6200037e565b61ffff166200038e565b8262000426565b505050565b6001600160a01b0381166200031857604051630bc2c5df60e11b81526001600160a01b038216600482015260240162000117565b50565b5f6001600160f01b038211156200034557604051632a49c10d60e01b815260040160405180910390fd5b5090565b620002df60056200103a6200043e60201b178362000452565b6200037a82620010456200059b60201b17836200059f565b5050565b5f62000389620005ca565b905090565b5f815f03620003b057604051637d6ec40560e11b815260040160405180910390fd5b6001600160a01b0383165f90815260076020526040902080545b80156200041a575f19015f620003e883835f91825260209091200190565b805490915061ffff1685106200041357546201000090046001600160a01b0316925062000420915050565b50620003ca565b84925050505b92915050565b6200037a82620010456200059b60201b1783620005f8565b5f6200044b828462000a42565b9392505050565b5f80806200045f6200037e565b86549091505f819003620004d8578660405180604001604052808461ffff1681526020016200048f5f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000593915050565b5f19015f620004ef88835f91825260209091200190565b80546201000090046001600160f01b03169550905062000511858760208a901c565b815490945061ffff908116908416111562000576576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e8152919091209451915190921662010000029216919091179101556200058f565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b0190565b6001600160a01b0383165f908152600660205260409020620005c390838362000452565b5050505050565b5f6213c680620005df636322c9624262000a6c565b620005eb919062000a82565b6200038990600162000aa2565b6001600160a01b0383165f90815260086020526040812081906200061e90858562000452565b604080516001600160f01b038085168252831660208201529294509092506001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b80516001600160a01b038116811462000690575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715620006d457620006d462000695565b604052919050565b5f6001600160401b03821115620006f757620006f762000695565b5060051b60200190565b5f82601f83011262000711575f80fd5b815160206200072a6200072483620006dc565b620006a9565b8083825260208201915060208460051b8701019350868411156200074c575f80fd5b602086015b848110156200076a578051835291830191830162000751565b509695505050505050565b5f805f6060848603121562000788575f80fd5b620007938462000679565b602085810151919450906001600160401b0380821115620007b2575f80fd5b818701915087601f830112620007c6575f80fd5b8151620007d76200072482620006dc565b81815260059190911b8301840190848101908a831115620007f6575f80fd5b938501935b828510156200081f576200080f8562000679565b82529385019390850190620007fb565b60408a0151909750945050508083111562000838575f80fd5b5050620008488682870162000701565b9150509250925092565b600181811c908216806200086757607f821691505b6020821081036200088657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002df57805f5260205f20601f840160051c81016020851015620008b35750805b601f840160051c820191505b81811015620005c3575f8155600101620008bf565b81516001600160401b03811115620008f057620008f062000695565b620009088162000901845462000852565b846200088c565b602080601f8311600181146200093e575f8415620009265750858301515b5f19600386901b1c1916600185901b17855562000998565b5f85815260208120601f198616915b828110156200096e578886015182559484019460019091019084016200094d565b50858210156200098c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808354620009c38162000852565b60018281168015620009de5760018114620009f45762000a22565b60ff198416875282151583028701945062000a22565b875f526020805f205f5b8581101562000a195781548a820152908401908201620009fe565b50505082870194505b50929695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160f01b0381811683821601908082111562000a655762000a6562000a2e565b5092915050565b8181038181111562000420576200042062000a2e565b5f8262000a9d57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000420576200042062000a2e565b60805160a05160c05160e0516135b162000af35f395f81816107340152610b1701525f6103b301525f6109d901525f6109a401526135b15ff3fe608060405234801561000f575f80fd5b50600436106102f9575f3560e01c806384b0196e11610192578063b7b72899116100e8578063e3ee160e11610093578063e94bb2231161006e578063e94bb2231461072f578063edc41f6414610756578063ef55bec614610769575f80fd5b8063e3ee160e146106c8578063e7a324dc146106db578063e94a010214610702575f80fd5b8063d505accf116100c3578063d505accf14610664578063d916948714610677578063dd62ed3e1461069e575f80fd5b8063b7b728991461062b578063c3cda5201461063e578063cf09299514610651575f80fd5b80639fd5a6cf11610148578063a9059cbb11610123578063a9059cbb146105f2578063ac9ebbd014610605578063ace150a514610618575f80fd5b80639fd5a6cf146105a5578063a08cb48b146105b8578063a0cc6a68146105cb575f80fd5b806391ddadf41161017857806391ddadf41461056b57806395d89b411461058a5780639ab24eb014610592575f80fd5b806384b0196e1461053d57806388b7ab6314610558575f80fd5b806340c10f19116102525780635c19a95c116101fd57806377eea146116101d857806377eea146146104e45780637ecebe00146104f75780637f2eecc314610516575f80fd5b80635c19a95c146104ab5780635c7e5d5f146104be57806370a08231146104d1575f80fd5b8063532992c51161022d578063532992c514610472578063587cde1e146104855780635a049a7014610498575f80fd5b806340c10f19146104285780634bf5d7e91461043d5780634d6d744114610445575f80fd5b806330adf81f116102b25780633a46b1a81161028d5780633a46b1a8146103ef5780633cb1838f14610402578063406f84de14610415575f80fd5b806330adf81f14610387578063313ce567146103ae5780633644e515146103e7575f80fd5b80630d33fbbd116102e25780630d33fbbd1461033e57806318160ddd1461035e57806323b872dd14610374575f80fd5b806306fdde03146102fd578063095ea7b31461031b575b5f80fd5b61030561077c565b6040516103129190612b72565b60405180910390f35b61032e610329366004612ba5565b61080b565b6040519015158152602001610312565b61035161034c366004612bcf565b610821565b6040516103129190612c3b565b61036661087a565b604051908152602001610312565b61032e610382366004612c4d565b6108b0565b6103667f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610312565b6103666109a1565b6103666103fd366004612ba5565b6109fb565b610351610410366004612c8b565b610a43565b610366610423366004612ba5565b610a70565b61043b610436366004612ba5565b610a90565b005b610305610b0a565b61044d610b14565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b61043b610480366004612cab565b610ba2565b61044d610493366004612ce3565b610bc7565b61043b6104a6366004612d13565b610bdd565b61043b6104b9366004612ce3565b610c04565b6103666104cc366004612d5f565b610c11565b6103666104df366004612ce3565b610c57565b61044d6104f2366004612ba5565b610c8f565b610366610505366004612ce3565b60016020525f908152604090205481565b6103667fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b610545610cb3565b6040516103129796959493929190612d76565b61043b610566366004612ee0565b610deb565b610573610e1a565b60405165ffffffffffff9091168152602001610312565b610305610e2c565b6103666105a0366004612ce3565b610eb8565b61043b6105b3366004612f63565b610eca565b61043b6105c6366004612fd4565b610eda565b6103667f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61032e610600366004612ba5565b610f04565b610366610613366004612bcf565b610f10565b61043b610626366004612fd4565b610f1c565b61043b61063936600461303a565b610f3c565b61043b61064c36600461308f565b610f59565b61043b61065f366004612ee0565b610f93565b61043b6106723660046130e5565b610fb3565b6103667f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6103666106ac36600461314e565b600460209081525f928352604080842090915290825290205481565b61043b6106d6366004613185565b610fc3565b6103667fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61032e610710366004612ba5565b600260209081525f928352604080842090915290825290205460ff1681565b61044d7f000000000000000000000000000000000000000000000000000000000000000081565b61043b610764366004612f63565b610fee565b61043b610777366004613185565b61101a565b60605f805461078a90613201565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613201565b80156108015780601f106107d857610100808354040283529160200191610801565b820191905f5260205f20905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b5f610817338484611049565b5060015b92915050565b60605f61082d836110b6565b9050610838816110f7565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260066020526040902061086f90610869866110b6565b83611151565b9150505b9392505050565b5f61088b610886611349565b611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098b5782811015610956576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b61099685858561135e565b506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146109d6576109d1611427565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610a06836110b6565b9050610a11816110f7565b610a1b84826114c1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b60605f610a4f836110b6565b9050610a5a816110f7565b610a686005610869866110b6565b949350505050565b5f80610a7b836110b6565b9050610a86816110f7565b610a1b84826114ef565b610a98610b14565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b06828261151d565b5050565b60606109d16115e3565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061324c565b610bb784610bb08686611603565b8484611677565b610bc1848461168b565b50505050565b5f61081b82610bd4611349565b61ffff16611719565b610bf385610beb8787611603565b8585856117fa565b610bfd858561168b565b5050505050565b610c0e338261180a565b50565b5f80610c1c836110b6565b9050610c27816110f7565b610c3081611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610c6982610c64611349565b6114ef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f80610c9a836110b6565b9050610ca5816110f7565b610a68848261ffff16611719565b5f606080828080838146308280604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b507f0f000000000000000000000000000000000000000000000000000000000000009493929190848054610d1c90613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613201565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b610e0387610dfd898989898989611875565b836118fc565b610e11878787878787611947565b50505050505050565b5f610e23611349565b61ffff16905090565b60038054610e3990613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590613201565b8015610eb05780601f10610e8757610100808354040283529160200191610eb0565b820191905f5260205f20905b815481529060010190602001808311610e9357829003601f168201915b505050505081565b5f610c6982610ec5611349565b6114c1565b610bfd85610dfd878787876119ca565b610eec88610bb08a8a8a8a8a8a611875565b610efa888888888888611947565b5050505050505050565b5f61081733848461135e565b5f610a68848484611a70565b610f2e88610bb08a8a8a8a8a8a611ad4565b610efa888888888888611b50565b610f4a83610dfd8585611603565b610f54838361168b565b505050565b5f610f65878787611a70565b90505f610f7482868686611c69565b9050610f7f86611c8d565b610f898188611cd0565b610efa818961180a565b610fa587610dfd898989898989611ad4565b610e11878787878787611b50565b610e1187610beb898989896119ca565b610fd589610beb8b8b8b8b8b8b611ad4565b610fe3898989898989611b50565b505050505050505050565b610ff782611c8d565b61100685610dfd868686611a70565b6110108584611cd0565b610bfd858561180a565b61102c89610beb8b8b8b8b8b8b611875565b610fe3898989898989611947565b5f6108738284613294565b0190565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61ffff8211156110f3576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611100611349565b90508061ffff168261ffff1610610b06576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff80841660048301528216602482015260440161094d565b60608261ffff165f03611190576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1611156111d2576040517fe0ff148000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111dd84846132d2565b6111e89060016132ed565b90508061ffff1667ffffffffffffffff81111561120757611207612e0c565b604051908082528060200260200182016040528015611230578160200160208202803683370190505b5085549092505b8015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61127287835f91825260209091200190565b805490915061ffff165b8561ffff16811161133957815485517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9590950194620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690869061ffff87169081106112ef576112ef613308565b6020026020010181815250508361ffff165f0361130f5750505050610873565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095019461127c565b5050611237565b50509392505050565b5f6109d1611d41565b5f61081b600583611d69565b61136782611e36565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c691815260200190565b60405180910390a35f6113d882611e9b565b90505f6113e3611349565b90506113ef8583611ef4565b611406611400868361ffff16611719565b83611f01565b6114108483611f0e565b610bfd611421858361ffff16611719565b83611f1b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516114599190613335565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081206108739083611d69565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206108739083611d69565b61152682611e36565b805f03611562576040517f77b8dde30000000000000000000000000000000000000000000000000000000081526004810182905260240161094d565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f6115b982611e9b565b90506115c481611f28565b6115ce8382611f0e565b610f546115dd84610bd4611349565b82611f1b565b60606040518060a001604052806065815260200161351760659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610873906080015b60405160208183030381529060405280519060200120611f36565b610bc161168685858585611f97565b611fd2565b6116958282612196565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611753576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b80156117f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6117b583835f91825260209091200190565b805490915061ffff1685106117eb575462010000900473ffffffffffffffffffffffffffffffffffffffff16925061081b915050565b5061177a565b50929392505050565b610bfd611686868686868661221f565b5f6118158284612267565b90505f6118228483612290565b90505f61183185610c64611349565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03611861575050505050565b61186b8282611f01565b610bfd8382611f1b565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b979650505050505050565b5f6119088484846124f6565b90505f81600581111561191d5761191d61340a565b036119285750505050565b61193384848461253a565b1561193e5750505050565b610bc181611fd2565b3373ffffffffffffffffffffffffffffffffffffffff8616146119b4576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8616602482015260440161094d565b6119c2868686868686611b50565b505050505050565b5f6119d482611c8d565b6119df858585611049565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c08101839052611a679060e00161165c565b95945050505050565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610a689060a00161165c565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b824211611b92576040517f498ff9a20000000000000000000000000000000000000000000000000000000081524260048201526024810184905260440161094d565b814210611bd4576040517fb3fcd33e0000000000000000000000000000000000000000000000000000000081524260048201526024810183905260440161094d565b611bde8682612196565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a36119c286868661135e565b5f80611c7786868686612682565b92509050611c8481611fd2565b50949350505050565b80421115610c0e576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810182905242602482015260440161094d565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114610f54576040517fd021c557000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161094d565b5f6213c680611d54636322c96242613437565b611d5e919061344a565b6109d1906001613482565b5f8161ffff165f03611da7576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015611e2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611de585835f91825260209091200190565b805490915061ffff808616911611611e2757546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061081b9050565b50611daa565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c0e576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161094d565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156110f3576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b068261278f8361279a565b610b068261278f836127c9565b610b06826110458361279a565b610b0682611045836127c9565b610f54600561103a83612879565b5f611f3f6109a1565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f611fa5868686612a39565b90925090505f826005811115611fbd57611fbd61340a565b14611fc857816118f1565b6118f18782612a80565b5f816005811115611fe557611fe561340a565b03611fed5750565b60018160058111156120015761200161340a565b03612038576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561204c5761204c61340a565b03612083576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038160058111156120975761209761340a565b036120ce576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156120e2576120e261340a565b03612119576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561212d5761212d61340a565b03612164576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615610b06576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810182905260440161094d565b5f805f61222e87878787612682565b90925090505f8260058111156122465761224661340a565b14612251578161225b565b61225b8882612a80565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161561228a5782610873565b50919050565b5f8061229a611349565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600760205260408120805492935091908190036123865760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a485935050505061081b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6123bb83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff90811690851611156124a8576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090911693909216929092171790556124ec565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f805f6125038585612ac3565b90925090505f82600581111561251b5761251b61340a565b146125265781612530565b6125308682612a80565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612567929190613495565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516125e891906134ad565b5f60405180830381855afa9150503d805f8114612620576040519150601f19603f3d011682016040523d82523d5f602084013e612625565b606091505b509150915081801561263957506020815110155b8015612530575080517f1626ba7e000000000000000000000000000000000000000000000000000000009061267790830160209081019084016134c8565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126b75750600390505f612786565b8460ff16601b141580156126cf57508460ff16601c14155b156126df5750600490505f612786565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561272f573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161561277d575f81612781565b60015f5b915091505b94509492505050565b5f61087382846134df565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610bfd908383612879565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260086020526040812081906127fa908585612879565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f805f612884611349565b86549091505f819003612914578660405180604001604052808461ffff1681526020016128b55f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250612a31915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61294988835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612983858763ffffffff8a16565b815490945061ffff90811690841611156129fd576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612a2d565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b5050505b935093915050565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416612a7287838884612682565b935093505050935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612abb576005610873565b505f92915050565b5f808251604114612ad95750600290505f612b00565b6020830151604084015160608501515f1a9190612af887848484612682565b945094505050505b9250929050565b5f5b83811015612b21578181015183820152602001612b09565b50505f910152565b5f8151808452612b40816020860160208601612b07565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6108736020830184612b29565b73ffffffffffffffffffffffffffffffffffffffff81168114610c0e575f80fd5b5f8060408385031215612bb6575f80fd5b8235612bc181612b84565b946020939093013593505050565b5f805f60608486031215612be1575f80fd5b8335612bec81612b84565b95602085013595506040909401359392505050565b5f815180845260208085019450602084015f5b83811015612c3057815187529582019590820190600101612c14565b509495945050505050565b602081525f6108736020830184612c01565b5f805f60608486031215612c5f575f80fd5b8335612c6a81612b84565b92506020840135612c7a81612b84565b929592945050506040919091013590565b5f8060408385031215612c9c575f80fd5b50508035926020909101359150565b5f805f8060808587031215612cbe575f80fd5b8435612cc981612b84565b966020860135965060408601359560600135945092505050565b5f60208284031215612cf3575f80fd5b813561087381612b84565b803560ff81168114612d0e575f80fd5b919050565b5f805f805f60a08688031215612d27575f80fd5b8535612d3281612b84565b945060208601359350612d4760408701612cfe565b94979396509394606081013594506080013592915050565b5f60208284031215612d6f575f80fd5b5035919050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f612db060e0830189612b29565b8281036040840152612dc28189612b29565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152612dfe8185612c01565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612e48575f80fd5b813567ffffffffffffffff80821115612e6357612e63612e0c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612ea957612ea9612e0c565b81604052838152866020858801011115612ec1575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a031215612ef6575f80fd5b8735612f0181612b84565b96506020880135612f1181612b84565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115612f48575f80fd5b612f548a828b01612e39565b91505092959891949750929550565b5f805f805f60a08688031215612f77575f80fd5b8535612f8281612b84565b94506020860135612f9281612b84565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fbb575f80fd5b612fc788828901612e39565b9150509295509295909350565b5f805f805f805f80610100898b031215612fec575f80fd5b8835612ff781612b84565b9750602089013561300781612b84565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561304c575f80fd5b833561305781612b84565b925060208401359150604084013567ffffffffffffffff811115613079575f80fd5b61308586828701612e39565b9150509250925092565b5f805f805f8060c087890312156130a4575f80fd5b86356130af81612b84565b955060208701359450604087013593506130cb60608801612cfe565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a0312156130fb575f80fd5b873561310681612b84565b9650602088013561311681612b84565b9550604088013594506060880135935061313260808901612cfe565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561315f575f80fd5b823561316a81612b84565b9150602083013561317a81612b84565b809150509250929050565b5f805f805f805f805f6101208a8c03121561319e575f80fd5b89356131a981612b84565b985060208a01356131b981612b84565b975060408a0135965060608a0135955060808a0135945060a08a013593506131e360c08b01612cfe565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061321557607f821691505b60208210810361228a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6020828403121561325c575f80fd5b815161087381612b84565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156132cb576132cb613267565b5092915050565b61ffff8281168282160390808211156132cb576132cb613267565b61ffff8181168382160190808211156132cb576132cb613267565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083545f60018260011c9150600183168061335257607f831692505b6020808410820361338a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561339e57600181146133d1576133fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506133fc565b5f8a8152602090205f5b868110156133f45781548b8201529085019083016133db565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8181038181111561081b5761081b613267565b5f8261347d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561081b5761081b613267565b828152604060208201525f610a686040830184612b29565b5f82516134be818460208701612b07565b9190910192915050565b5f602082840312156134d8575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156132cb576132cb61326756fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313636333232343136322665706f6368506572696f643d31323936303030a264697066735822122053ce39c85af5d8b827a4fbd5d2e300e33f6de260054d6df29ceb2b708d1761d264736f6c63430008170033" } +{ "bytecode": "0x61010060405234801562000011575f80fd5b50604051620040a4380380620040a4833981016040819052620000349162000775565b6040518060400160405280600b81526020016a05a65726f206279204d5e360ac1b815250604051806040016040528060048152602001635a45524f60e01b8152506006828282828080805f90816200008d9190620008d4565b50466080526200009c6200018a565b60a0525060039150620000b290508382620008d4565b5060ff1660c052505050506001600160a01b03841660e08190529050620000ec576040516333927a8160e21b815260040160405180910390fd5b815181518082146200012057604051631f4bb7c160e31b815260048101839052602481018290526044015b60405180910390fd5b5f5b828110156200017e5762000175858281518110620001445762000144620009a0565b6020026020010151858381518110620001615762000161620009a0565b60200260200101516200022660201b60201c565b60010162000122565b50505050505062000ab8565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001be9190620009b4565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6200023182620002e4565b805f0362000256576040516377b8dde360e01b81526004810182905260240162000117565b6040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f620002a2826200031b565b9050620002af8162000349565b620002bb838262000362565b620002df620002d884620002ce6200037e565b61ffff166200038e565b8262000426565b505050565b6001600160a01b0381166200031857604051630bc2c5df60e11b81526001600160a01b038216600482015260240162000117565b50565b5f6001600160f01b038211156200034557604051632a49c10d60e01b815260040160405180910390fd5b5090565b620002df60056200103a6200043e60201b178362000452565b6200037a82620010456200059b60201b17836200059f565b5050565b5f62000389620005ca565b905090565b5f815f03620003b057604051637d6ec40560e11b815260040160405180910390fd5b6001600160a01b0383165f90815260076020526040902080545b80156200041a575f19015f620003e883835f91825260209091200190565b805490915061ffff1685106200041357546201000090046001600160a01b0316925062000420915050565b50620003ca565b84925050505b92915050565b6200037a82620010456200059b60201b1783620005f8565b5f6200044b828462000a42565b9392505050565b5f80806200045f6200037e565b86549091505f819003620004d8578660405180604001604052808461ffff1681526020016200048f5f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000593915050565b5f19015f620004ef88835f91825260209091200190565b80546201000090046001600160f01b03169550905062000511858760208a901c565b815490945061ffff908116908416111562000576576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e8152919091209451915190921662010000029216919091179101556200058f565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b0190565b6001600160a01b0383165f908152600660205260409020620005c390838362000452565b5050505050565b5f6213c680620005df63661bd3504262000a6c565b620005eb919062000a82565b6200038990600162000aa2565b6001600160a01b0383165f90815260086020526040812081906200061e90858562000452565b604080516001600160f01b038085168252831660208201529294509092506001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b80516001600160a01b038116811462000690575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715620006d457620006d462000695565b604052919050565b5f6001600160401b03821115620006f757620006f762000695565b5060051b60200190565b5f82601f83011262000711575f80fd5b815160206200072a6200072483620006dc565b620006a9565b8083825260208201915060208460051b8701019350868411156200074c575f80fd5b602086015b848110156200076a578051835291830191830162000751565b509695505050505050565b5f805f6060848603121562000788575f80fd5b620007938462000679565b602085810151919450906001600160401b0380821115620007b2575f80fd5b818701915087601f830112620007c6575f80fd5b8151620007d76200072482620006dc565b81815260059190911b8301840190848101908a831115620007f6575f80fd5b938501935b828510156200081f576200080f8562000679565b82529385019390850190620007fb565b60408a0151909750945050508083111562000838575f80fd5b5050620008488682870162000701565b9150509250925092565b600181811c908216806200086757607f821691505b6020821081036200088657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002df57805f5260205f20601f840160051c81016020851015620008b35750805b601f840160051c820191505b81811015620005c3575f8155600101620008bf565b81516001600160401b03811115620008f057620008f062000695565b620009088162000901845462000852565b846200088c565b602080601f8311600181146200093e575f8415620009265750858301515b5f19600386901b1c1916600185901b17855562000998565b5f85815260208120601f198616915b828110156200096e578886015182559484019460019091019084016200094d565b50858210156200098c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808354620009c38162000852565b60018281168015620009de5760018114620009f45762000a22565b60ff198416875282151583028701945062000a22565b875f526020805f205f5b8581101562000a195781548a820152908401908201620009fe565b50505082870194505b50929695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160f01b0381811683821601908082111562000a655762000a6562000a2e565b5092915050565b8181038181111562000420576200042062000a2e565b5f8262000a9d57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000420576200042062000a2e565b60805160a05160c05160e0516135b162000af35f395f81816107340152610b1701525f6103b301525f6109d901525f6109a401526135b15ff3fe608060405234801561000f575f80fd5b50600436106102f9575f3560e01c806384b0196e11610192578063b7b72899116100e8578063e3ee160e11610093578063e94bb2231161006e578063e94bb2231461072f578063edc41f6414610756578063ef55bec614610769575f80fd5b8063e3ee160e146106c8578063e7a324dc146106db578063e94a010214610702575f80fd5b8063d505accf116100c3578063d505accf14610664578063d916948714610677578063dd62ed3e1461069e575f80fd5b8063b7b728991461062b578063c3cda5201461063e578063cf09299514610651575f80fd5b80639fd5a6cf11610148578063a9059cbb11610123578063a9059cbb146105f2578063ac9ebbd014610605578063ace150a514610618575f80fd5b80639fd5a6cf146105a5578063a08cb48b146105b8578063a0cc6a68146105cb575f80fd5b806391ddadf41161017857806391ddadf41461056b57806395d89b411461058a5780639ab24eb014610592575f80fd5b806384b0196e1461053d57806388b7ab6314610558575f80fd5b806340c10f19116102525780635c19a95c116101fd57806377eea146116101d857806377eea146146104e45780637ecebe00146104f75780637f2eecc314610516575f80fd5b80635c19a95c146104ab5780635c7e5d5f146104be57806370a08231146104d1575f80fd5b8063532992c51161022d578063532992c514610472578063587cde1e146104855780635a049a7014610498575f80fd5b806340c10f19146104285780634bf5d7e91461043d5780634d6d744114610445575f80fd5b806330adf81f116102b25780633a46b1a81161028d5780633a46b1a8146103ef5780633cb1838f14610402578063406f84de14610415575f80fd5b806330adf81f14610387578063313ce567146103ae5780633644e515146103e7575f80fd5b80630d33fbbd116102e25780630d33fbbd1461033e57806318160ddd1461035e57806323b872dd14610374575f80fd5b806306fdde03146102fd578063095ea7b31461031b575b5f80fd5b61030561077c565b6040516103129190612b72565b60405180910390f35b61032e610329366004612ba5565b61080b565b6040519015158152602001610312565b61035161034c366004612bcf565b610821565b6040516103129190612c3b565b61036661087a565b604051908152602001610312565b61032e610382366004612c4d565b6108b0565b6103667f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610312565b6103666109a1565b6103666103fd366004612ba5565b6109fb565b610351610410366004612c8b565b610a43565b610366610423366004612ba5565b610a70565b61043b610436366004612ba5565b610a90565b005b610305610b0a565b61044d610b14565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b61043b610480366004612cab565b610ba2565b61044d610493366004612ce3565b610bc7565b61043b6104a6366004612d13565b610bdd565b61043b6104b9366004612ce3565b610c04565b6103666104cc366004612d5f565b610c11565b6103666104df366004612ce3565b610c57565b61044d6104f2366004612ba5565b610c8f565b610366610505366004612ce3565b60016020525f908152604090205481565b6103667fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b610545610cb3565b6040516103129796959493929190612d76565b61043b610566366004612ee0565b610deb565b610573610e1a565b60405165ffffffffffff9091168152602001610312565b610305610e2c565b6103666105a0366004612ce3565b610eb8565b61043b6105b3366004612f63565b610eca565b61043b6105c6366004612fd4565b610eda565b6103667f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61032e610600366004612ba5565b610f04565b610366610613366004612bcf565b610f10565b61043b610626366004612fd4565b610f1c565b61043b61063936600461303a565b610f3c565b61043b61064c36600461308f565b610f59565b61043b61065f366004612ee0565b610f93565b61043b6106723660046130e5565b610fb3565b6103667f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6103666106ac36600461314e565b600460209081525f928352604080842090915290825290205481565b61043b6106d6366004613185565b610fc3565b6103667fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61032e610710366004612ba5565b600260209081525f928352604080842090915290825290205460ff1681565b61044d7f000000000000000000000000000000000000000000000000000000000000000081565b61043b610764366004612f63565b610fee565b61043b610777366004613185565b61101a565b60605f805461078a90613201565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613201565b80156108015780601f106107d857610100808354040283529160200191610801565b820191905f5260205f20905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b5f610817338484611049565b5060015b92915050565b60605f61082d836110b6565b9050610838816110f7565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260066020526040902061086f90610869866110b6565b83611151565b9150505b9392505050565b5f61088b610886611349565b611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098b5782811015610956576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b61099685858561135e565b506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146109d6576109d1611427565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610a06836110b6565b9050610a11816110f7565b610a1b84826114c1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b60605f610a4f836110b6565b9050610a5a816110f7565b610a686005610869866110b6565b949350505050565b5f80610a7b836110b6565b9050610a86816110f7565b610a1b84826114ef565b610a98610b14565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b06828261151d565b5050565b60606109d16115e3565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061324c565b610bb784610bb08686611603565b8484611677565b610bc1848461168b565b50505050565b5f61081b82610bd4611349565b61ffff16611719565b610bf385610beb8787611603565b8585856117fa565b610bfd858561168b565b5050505050565b610c0e338261180a565b50565b5f80610c1c836110b6565b9050610c27816110f7565b610c3081611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610c6982610c64611349565b6114ef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f80610c9a836110b6565b9050610ca5816110f7565b610a68848261ffff16611719565b5f606080828080838146308280604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b507f0f000000000000000000000000000000000000000000000000000000000000009493929190848054610d1c90613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613201565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b610e0387610dfd898989898989611875565b836118fc565b610e11878787878787611947565b50505050505050565b5f610e23611349565b61ffff16905090565b60038054610e3990613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590613201565b8015610eb05780601f10610e8757610100808354040283529160200191610eb0565b820191905f5260205f20905b815481529060010190602001808311610e9357829003601f168201915b505050505081565b5f610c6982610ec5611349565b6114c1565b610bfd85610dfd878787876119ca565b610eec88610bb08a8a8a8a8a8a611875565b610efa888888888888611947565b5050505050505050565b5f61081733848461135e565b5f610a68848484611a70565b610f2e88610bb08a8a8a8a8a8a611ad4565b610efa888888888888611b50565b610f4a83610dfd8585611603565b610f54838361168b565b505050565b5f610f65878787611a70565b90505f610f7482868686611c69565b9050610f7f86611c8d565b610f898188611cd0565b610efa818961180a565b610fa587610dfd898989898989611ad4565b610e11878787878787611b50565b610e1187610beb898989896119ca565b610fd589610beb8b8b8b8b8b8b611ad4565b610fe3898989898989611b50565b505050505050505050565b610ff782611c8d565b61100685610dfd868686611a70565b6110108584611cd0565b610bfd858561180a565b61102c89610beb8b8b8b8b8b8b611875565b610fe3898989898989611947565b5f6108738284613294565b0190565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61ffff8211156110f3576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611100611349565b90508061ffff168261ffff1610610b06576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff80841660048301528216602482015260440161094d565b60608261ffff165f03611190576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1611156111d2576040517fe0ff148000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111dd84846132d2565b6111e89060016132ed565b90508061ffff1667ffffffffffffffff81111561120757611207612e0c565b604051908082528060200260200182016040528015611230578160200160208202803683370190505b5085549092505b8015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61127287835f91825260209091200190565b805490915061ffff165b8561ffff16811161133957815485517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9590950194620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690869061ffff87169081106112ef576112ef613308565b6020026020010181815250508361ffff165f0361130f5750505050610873565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095019461127c565b5050611237565b50509392505050565b5f6109d1611d41565b5f61081b600583611d69565b61136782611e36565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c691815260200190565b60405180910390a35f6113d882611e9b565b90505f6113e3611349565b90506113ef8583611ef4565b611406611400868361ffff16611719565b83611f01565b6114108483611f0e565b610bfd611421858361ffff16611719565b83611f1b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516114599190613335565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081206108739083611d69565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206108739083611d69565b61152682611e36565b805f03611562576040517f77b8dde30000000000000000000000000000000000000000000000000000000081526004810182905260240161094d565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f6115b982611e9b565b90506115c481611f28565b6115ce8382611f0e565b610f546115dd84610bd4611349565b82611f1b565b60606040518060a001604052806065815260200161351760659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610873906080015b60405160208183030381529060405280519060200120611f36565b610bc161168685858585611f97565b611fd2565b6116958282612196565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611753576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b80156117f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6117b583835f91825260209091200190565b805490915061ffff1685106117eb575462010000900473ffffffffffffffffffffffffffffffffffffffff16925061081b915050565b5061177a565b50929392505050565b610bfd611686868686868661221f565b5f6118158284612267565b90505f6118228483612290565b90505f61183185610c64611349565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03611861575050505050565b61186b8282611f01565b610bfd8382611f1b565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b979650505050505050565b5f6119088484846124f6565b90505f81600581111561191d5761191d61340a565b036119285750505050565b61193384848461253a565b1561193e5750505050565b610bc181611fd2565b3373ffffffffffffffffffffffffffffffffffffffff8616146119b4576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8616602482015260440161094d565b6119c2868686868686611b50565b505050505050565b5f6119d482611c8d565b6119df858585611049565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c08101839052611a679060e00161165c565b95945050505050565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610a689060a00161165c565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b824211611b92576040517f498ff9a20000000000000000000000000000000000000000000000000000000081524260048201526024810184905260440161094d565b814210611bd4576040517fb3fcd33e0000000000000000000000000000000000000000000000000000000081524260048201526024810183905260440161094d565b611bde8682612196565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a36119c286868661135e565b5f80611c7786868686612682565b92509050611c8481611fd2565b50949350505050565b80421115610c0e576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810182905242602482015260440161094d565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114610f54576040517fd021c557000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161094d565b5f6213c680611d5463661bd35042613437565b611d5e919061344a565b6109d1906001613482565b5f8161ffff165f03611da7576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015611e2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611de585835f91825260209091200190565b805490915061ffff808616911611611e2757546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061081b9050565b50611daa565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c0e576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161094d565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156110f3576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b068261278f8361279a565b610b068261278f836127c9565b610b06826110458361279a565b610b0682611045836127c9565b610f54600561103a83612879565b5f611f3f6109a1565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f611fa5868686612a39565b90925090505f826005811115611fbd57611fbd61340a565b14611fc857816118f1565b6118f18782612a80565b5f816005811115611fe557611fe561340a565b03611fed5750565b60018160058111156120015761200161340a565b03612038576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561204c5761204c61340a565b03612083576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038160058111156120975761209761340a565b036120ce576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156120e2576120e261340a565b03612119576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561212d5761212d61340a565b03612164576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615610b06576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810182905260440161094d565b5f805f61222e87878787612682565b90925090505f8260058111156122465761224661340a565b14612251578161225b565b61225b8882612a80565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161561228a5782610873565b50919050565b5f8061229a611349565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600760205260408120805492935091908190036123865760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a485935050505061081b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6123bb83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff90811690851611156124a8576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090911693909216929092171790556124ec565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f805f6125038585612ac3565b90925090505f82600581111561251b5761251b61340a565b146125265781612530565b6125308682612a80565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612567929190613495565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516125e891906134ad565b5f60405180830381855afa9150503d805f8114612620576040519150601f19603f3d011682016040523d82523d5f602084013e612625565b606091505b509150915081801561263957506020815110155b8015612530575080517f1626ba7e000000000000000000000000000000000000000000000000000000009061267790830160209081019084016134c8565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126b75750600390505f612786565b8460ff16601b141580156126cf57508460ff16601c14155b156126df5750600490505f612786565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561272f573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161561277d575f81612781565b60015f5b915091505b94509492505050565b5f61087382846134df565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610bfd908383612879565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260086020526040812081906127fa908585612879565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f805f612884611349565b86549091505f819003612914578660405180604001604052808461ffff1681526020016128b55f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250612a31915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61294988835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612983858763ffffffff8a16565b815490945061ffff90811690841611156129fd576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612a2d565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b5050505b935093915050565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416612a7287838884612682565b935093505050935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612abb576005610873565b505f92915050565b5f808251604114612ad95750600290505f612b00565b6020830151604084015160608501515f1a9190612af887848484612682565b945094505050505b9250929050565b5f5b83811015612b21578181015183820152602001612b09565b50505f910152565b5f8151808452612b40816020860160208601612b07565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6108736020830184612b29565b73ffffffffffffffffffffffffffffffffffffffff81168114610c0e575f80fd5b5f8060408385031215612bb6575f80fd5b8235612bc181612b84565b946020939093013593505050565b5f805f60608486031215612be1575f80fd5b8335612bec81612b84565b95602085013595506040909401359392505050565b5f815180845260208085019450602084015f5b83811015612c3057815187529582019590820190600101612c14565b509495945050505050565b602081525f6108736020830184612c01565b5f805f60608486031215612c5f575f80fd5b8335612c6a81612b84565b92506020840135612c7a81612b84565b929592945050506040919091013590565b5f8060408385031215612c9c575f80fd5b50508035926020909101359150565b5f805f8060808587031215612cbe575f80fd5b8435612cc981612b84565b966020860135965060408601359560600135945092505050565b5f60208284031215612cf3575f80fd5b813561087381612b84565b803560ff81168114612d0e575f80fd5b919050565b5f805f805f60a08688031215612d27575f80fd5b8535612d3281612b84565b945060208601359350612d4760408701612cfe565b94979396509394606081013594506080013592915050565b5f60208284031215612d6f575f80fd5b5035919050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f612db060e0830189612b29565b8281036040840152612dc28189612b29565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152612dfe8185612c01565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612e48575f80fd5b813567ffffffffffffffff80821115612e6357612e63612e0c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612ea957612ea9612e0c565b81604052838152866020858801011115612ec1575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a031215612ef6575f80fd5b8735612f0181612b84565b96506020880135612f1181612b84565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115612f48575f80fd5b612f548a828b01612e39565b91505092959891949750929550565b5f805f805f60a08688031215612f77575f80fd5b8535612f8281612b84565b94506020860135612f9281612b84565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fbb575f80fd5b612fc788828901612e39565b9150509295509295909350565b5f805f805f805f80610100898b031215612fec575f80fd5b8835612ff781612b84565b9750602089013561300781612b84565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561304c575f80fd5b833561305781612b84565b925060208401359150604084013567ffffffffffffffff811115613079575f80fd5b61308586828701612e39565b9150509250925092565b5f805f805f8060c087890312156130a4575f80fd5b86356130af81612b84565b955060208701359450604087013593506130cb60608801612cfe565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a0312156130fb575f80fd5b873561310681612b84565b9650602088013561311681612b84565b9550604088013594506060880135935061313260808901612cfe565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561315f575f80fd5b823561316a81612b84565b9150602083013561317a81612b84565b809150509250929050565b5f805f805f805f805f6101208a8c03121561319e575f80fd5b89356131a981612b84565b985060208a01356131b981612b84565b975060408a0135965060608a0135955060808a0135945060a08a013593506131e360c08b01612cfe565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061321557607f821691505b60208210810361228a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6020828403121561325c575f80fd5b815161087381612b84565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156132cb576132cb613267565b5092915050565b61ffff8281168282160390808211156132cb576132cb613267565b61ffff8181168382160190808211156132cb576132cb613267565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083545f60018260011c9150600183168061335257607f831692505b6020808410820361338a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561339e57600181146133d1576133fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506133fc565b5f8a8152602090205f5b868110156133f45781548b8201529085019083016133db565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8181038181111561081b5761081b613267565b5f8261347d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561081b5761081b613267565b828152604060208201525f610a686040830184612b29565b5f82516134be818460208701612b07565b9190910192915050565b5f602082840312156134d8575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156132cb576132cb61326756fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220ec4bfaca67cace12d617502d6dc02861dfc6d4b972ddd6969c16d79c23c3696464736f6c63430008170033" }