0x60a060405234801561000f575f80fd5b5060405161146438038061146483398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f80fd5b81516001600160a01b0381168114610065575f80fd5b9392505050565b6080516113d36100915f395f818160f20152818161043601526104f101526113d35ff3fe60806040526004361061006e575f3560e01c80638bcb62161161004c5780638bcb6216146101395780638fca91531461014d5780639093410d1461016e5780639864dcdd146101bb575f80fd5b80632fa13cb8146100725780635d1ca6311461009c5780637aaf53e6146100e1575b5f80fd5b34801561007d575f80fd5b506100855f81565b60405160ff90911681526020015b60405180910390f35b3480156100a7575f80fd5b506100b06101cf565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610093565b3480156100ec575f80fd5b506101147f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610093565b348015610144575f80fd5b50610085600181565b61016061015b366004610fc6565b610231565b604051908152602001610093565b348015610179575f80fd5b5061018d610188366004611076565b61036f565b604080518251815260208084015161ffff908116918301919091529282015190921690820152606001610093565b3480156101c6575f80fd5b50610085607f81565b5f6040518060400160405280600d81526020017f4161766556335061796261636b000000000000000000000000000000000000008152506040516020016102169190611145565b60405160208183030381529060405280519060200120905090565b5f8061027186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061036f92505050565b905061029a815f0151855f8151811061028c5761028c611160565b6020026020010151856103a3565b8152602081015184516102bf9161ffff16908690600190811061028c5761028c611160565b61ffff1660208201819052815160408301515f9283926102de926103e1565b915091506040518060400160405280600d81526020017f4161766556335061796261636b000000000000000000000000000000000000008152506040516103259190611145565b60405180910390207f2b6d22f419271bcc89bbac8deec947c664365d6e24d06fef0ca7c325c704dce38260405161035c919061118d565b60405180910390a2509695505050505050565b604080516060810182525f8082526020808301829052928201528251909161039d91840181019084016111f3565b92915050565b5f60ff8316156103d757816103b784610770565b60ff16815181106103ca576103ca611160565b60200260200101515f1c93505b50825b9392505050565b6040517f68b554940000000000000000000000000000000000000000000000000000000081525f6004820181905261ffff8316602483015290606090829073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906368b5549490604401602060405180830381865afa15801561047b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049f9190611256565b6040517fa16a9a3e0000000000000000000000000000000000000000000000000000000081525f6004820181905261ffff8716602483015291925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a16a9a3e90604401602060405180830381865afa158015610536573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055a9190611256565b6040517f5275179700000000000000000000000000000000000000000000000000000000815261ffff891660048201529091505f9073ffffffffffffffffffffffffffffffffffffffff841690635275179790602401602060405180830381865afa1580156105cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ef9190611256565b90505f6105fd8230856107bb565b905080881161060c578761060e565b805b975061063173ffffffffffffffffffffffffffffffffffffffff8316858a610866565b5f61065273ffffffffffffffffffffffffffffffffffffffff84163061096b565b6040517f573ade8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018c9052600260448301523060648301529192509086169063573ade81906084016020604051808303815f875af11580156106d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f99190611289565b505f61071b73ffffffffffffffffffffffffffffffffffffffff85163061096b565b6040805173ffffffffffffffffffffffffffffffffffffffff871660208201528082018d9052815180820383018152606090910190915290915061075f82846112cd565b9c909b509950505050505050505050565b5f61077a82610a55565b6107b0576040517f866f6e8700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61039d6001836112e0565b6040517f28dd2d0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301525f91908316906328dd2d019060440161012060405180830381865afa158015610831573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108559190611308565b50949b9a5050505050505050505050565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8416016108a857505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015282919085169063dd62ed3e90604401602060405180830381865afa15801561091b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093f9190611289565b10156109665761096673ffffffffffffffffffffffffffffffffffffffff84168383610a73565b505050565b5f7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8416016109c7575073ffffffffffffffffffffffffffffffffffffffff81163161039d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015610a31573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103da9190611289565b5f600160ff83161080159061039d5750607f60ff8316111592915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052610aff8482610ba2565b610b9c576040805173ffffffffffffffffffffffffffffffffffffffff851660248201525f6044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052610b92908590610c5d565b610b9c8482610c5d565b50505050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1684604051610bca9190611145565b5f604051808303815f865af19150503d805f8114610c03576040519150601f19603f3d011682016040523d82523d5f602084013e610c08565b606091505b5091509150818015610c32575080511580610c32575080806020019051810190610c329190611384565b8015610c5457505f8573ffffffffffffffffffffffffffffffffffffffff163b115b95945050505050565b5f610c7e73ffffffffffffffffffffffffffffffffffffffff841683610cf6565b905080515f14158015610ca2575080806020019051810190610ca09190611384565b155b15610966576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606103da83835f845f808573ffffffffffffffffffffffffffffffffffffffff168486604051610d279190611145565b5f6040518083038185875af1925050503d805f8114610d61576040519150601f19603f3d011682016040523d82523d5f602084013e610d66565b606091505b5091509150610d76868383610d80565b9695505050505050565b606082610d9557610d9082610e0f565b6103da565b8151158015610db9575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610e08576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610ced565b50806103da565b805115610e1f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610ec557610ec5610e51565b604052919050565b5f67ffffffffffffffff821115610ee657610ee6610e51565b5060051b60200190565b5f82601f830112610eff575f80fd5b81356020610f14610f0f83610ecd565b610e7e565b8083825260208201915060208460051b870101935086841115610f35575f80fd5b602086015b84811015610f5f57803560ff81168114610f52575f80fd5b8352918301918301610f3a565b509695505050505050565b5f82601f830112610f79575f80fd5b81356020610f89610f0f83610ecd565b8083825260208201915060208460051b870101935086841115610faa575f80fd5b602086015b84811015610f5f5780358352918301918301610faf565b5f805f8060608587031215610fd9575f80fd5b843567ffffffffffffffff80821115610ff0575f80fd5b818701915087601f830112611003575f80fd5b813581811115611011575f80fd5b886020828501011115611022575f80fd5b60209283019650945090860135908082111561103c575f80fd5b61104888838901610ef0565b9350604087013591508082111561105d575f80fd5b5061106a87828801610f6a565b91505092959194509250565b5f6020808385031215611087575f80fd5b823567ffffffffffffffff8082111561109e575f80fd5b818501915085601f8301126110b1575f80fd5b8135818111156110c3576110c3610e51565b6110f3847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610e7e565b91508082528684828501011115611108575f80fd5b80848401858401375f90820190930192909252509392505050565b5f5b8381101561113d578181015183820152602001611125565b50505f910152565b5f8251611156818460208701611123565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602081525f82518060208401526111ab816040850160208701611123565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b805161ffff811681146111ee575f80fd5b919050565b5f60608284031215611203575f80fd5b6040516060810181811067ffffffffffffffff8211171561122657611226610e51565b60405282518152611239602084016111dd565b602082015261124a604084016111dd565b60408201529392505050565b5f60208284031215611266575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146103da575f80fd5b5f60208284031215611299575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561039d5761039d6112a0565b60ff828116828216039081111561039d5761039d6112a0565b805180151581146111ee575f80fd5b5f805f805f805f805f6101208a8c031215611321575f80fd5b8951985060208a0151975060408a0151965060608a0151955060808a0151945060a08a0151935060c08a0151925060e08a015164ffffffffff81168114611366575f80fd5b91506113756101008b016112f9565b90509295985092959850929598565b5f60208284031215611394575f80fd5b6103da826112f956fea26469706673582212206fc4867ee5e06f22e8ce58f9cbbc1f34685071da0361f0e00459e9aece7171a864736f6c6343000818003300000000000000000000000003a993369b5b6290d412b63d29f3bc2dc13f5e61