0x60e06040523480156200001157600080fd5b5060405162001d1a38038062001d1a833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c611c0e6200010c6000398061057f525080610816525080610174528061027052806105f7528061088e5280610be55250611c0e6000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c806323a69e751461007d5780632f80bb1d146100925780634aa4a4fc146100be578063bd21704a146100d3578063c45a0155146100f6578063c6a5026a146100fe578063cdca175314610111578063d5f3948814610124575b600080fd5b61009061008b3660046117af565b61012c565b005b6100a56100a0366004611727565b6103ca565b6040516100b59493929190611a87565b60405180910390f35b6100c661057d565b6040516100b591906119c2565b6100e66100e136600461186e565b6105a1565b6040516100b59493929190611b22565b6100c6610814565b6100e661010c36600461186e565b610838565b6100a561011f366004611727565b610a4e565b6100c6610be3565b600083138061013b5750600082135b61014457600080fd5b600080600061015284610c07565b9250925092507313f4ea83d0bd40e75c8222255bc855a974568dd4638bdb19257f00000000000000000000000000000000000000000000000000000000000000008585856040518563ffffffff1660e01b81526004016101b594939291906119d6565b60206040518083038186803b1580156101cd57600080fd5b505af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190611769565b50600080600080891361023157856001600160a01b0316856001600160a01b031610888a60000361024c565b846001600160a01b0316866001600160a01b03161089896000035b92509250925060007313f4ea83d0bd40e75c8222255bc855a974568dd4634e6c8ed87f00000000000000000000000000000000000000000000000000000000000000008989896040518563ffffffff1660e01b81526004016102b194939291906119d6565b60206040518083038186803b1580156102c957600080fd5b505af41580156102dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103019190611769565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561033f57600080fd5b505afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611889565b505050505091509150851561039d57604051848152826020820152816040820152606081fd5b600054156103b35760005484146103b357600080fd5b604051858152826020820152816040820152606081fd5b600060608060006103da86610c38565b6001600160401b03811180156103ef57600080fd5b50604051908082528060200260200182016040528015610419578160200160208202803683370190505b50925061042586610c38565b6001600160401b038111801561043a57600080fd5b50604051908082528060200260200182016040528015610464578160200160208202803683370190505b50915060005b60008060006104788a610c07565b9250925092506000806000806104d46040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b03168152506105a1565b9350935093509350828b89815181106104e957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061051657fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926105438e610c49565b15610558576105518e610c51565b9d50610568565b8c9b505050505050505050610574565b5050505050505061046a565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516040516309cd91db60e31b81526000938493849384936001600160a01b03808516908416109385937313f4ea83d0bd40e75c8222255bc855a974568dd493634e6c8ed893610622937f0000000000000000000000000000000000000000000000000000000000000000939290916004016119d6565b60206040518083038186803b15801561063a57600080fd5b505af415801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106729190611769565b905086608001516001600160a01b0316600014156106935760408701516000555b60005a9050816001600160a01b031663128acb0830856106b68c60400151610c6e565b6000038c608001516001600160a01b03166000146106d8578c608001516106fe565b876106f75773fffd8963efd1fc6a506488495d951d5263988d256106fe565b6401000276a45b8d602001518e606001518f6000015160405160200161071f9392919061198c565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161074e959493929190611a04565b6040805180830381600087803b15801561076757600080fd5b505af1925050508015610797575060408051601f3d908101601f191682019092526107949181019061178c565b60015b610807573d8080156107c5576040519150601f19603f3d011682016040523d82523d6000602084013e6107ca565b606091505b505a8203945088608001516001600160a01b0316600014156107eb57600080555b6107f6818487610c84565b97509750975097505050505061080d565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516040516309cd91db60e31b81526000938493849384936001600160a01b03808516908416109385937313f4ea83d0bd40e75c8222255bc855a974568dd493634e6c8ed8936108b9937f0000000000000000000000000000000000000000000000000000000000000000939290916004016119d6565b60206040518083038186803b1580156108d157600080fd5b505af41580156108e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109099190611769565b905060005a9050816001600160a01b031663128acb08308561092e8c60400151610c6e565b60808d01516001600160a01b03161561094b578c60800151610971565b8761096a5773fffd8963efd1fc6a506488495d951d5263988d25610971565b6401000276a45b8d600001518e606001518f602001516040516020016109929392919061198c565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016109c1959493929190611a04565b6040805180830381600087803b1580156109da57600080fd5b505af1925050508015610a0a575060408051601f3d908101601f19168201909252610a079181019061178c565b60015b610807573d808015610a38576040519150601f19603f3d011682016040523d82523d6000602084013e610a3d565b606091505b505a820394506107f6818487610c84565b60006060806000610a5e86610c38565b6001600160401b0381118015610a7357600080fd5b50604051908082528060200260200182016040528015610a9d578160200160208202803683370190505b509250610aa986610c38565b6001600160401b0381118015610abe57600080fd5b50604051908082528060200260200182016040528015610ae8578160200160208202803683370190505b50915060005b6000806000610afc8a610c07565b925092509250600080600080610b586040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610838565b9350935093509350828b8981518110610b6d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a8981518110610b9a57fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b92610bc78e610c49565b1561055857610bd58e610c51565b9d5050505050505050610aee565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008080610c158482610d3e565b9250610c22846014610dee565b9050610c2f846017610d3e565b91509193909250565b80516017601319909101045b919050565b516042111590565b8051606090610c6890839060179060161901610e95565b92915050565b6000600160ff1b8210610c8057600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610cc657600080fd5b505afa158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe9190611889565b50939650610d1394508d9350610fe692505050565b91975095509050610d2e6001600160a01b0389168383611073565b9350869250505093509350935093565b600081826014011015610d8d576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015610dde576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015610e3c576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015610e8c576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b60608182601f011015610ee0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610f28576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610f74576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015610f935760405191506000825260208201604052610fdd565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610fcc578051835260209283019201610fb4565b5050858452601f01601f1916604052505b50949350505050565b600080600083516060146110525760448451101561101f5760405162461bcd60e51b815260040161101690611a5d565b60405180910390fd5b6004840193508380602001905181019061103991906117fc565b60405162461bcd60e51b81526004016110169190611a4a565b838060200190518101906110669190611923565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ba57600080fd5b505afa1580156110ce573d6000803e3d6000fd5b505050506040513d60208110156110e457600080fd5b5051600290810b908c900b816110f657fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561113c57600080fd5b505afa158015611150573d6000803e3d6000fd5b505050506040513d602081101561116657600080fd5b5051600290810b908d900b8161117857fe5b0560020b8161118357fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b505050506040513d60208110156111ed57600080fd5b5051600290810b908d900b816111ff57fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b5051600290810b908e900b8161128157fe5b0560020b8161128c57fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156112e057600080fd5b505afa1580156112f4573d6000803e3d6000fd5b505050506040513d602081101561130a57600080fd5b50511611801561139057508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561134e57600080fd5b505afa158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b5051600290810b908d900b8161138a57fe5b0760020b155b80156113a157508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156113f457600080fd5b505afa158015611408573d6000803e3d6000fd5b505050506040513d602081101561141e57600080fd5b5051161180156114a457508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561146257600080fd5b505afa158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b5051600290810b908e900b8161149e57fe5b0760020b155b80156114b557508b60020b8d60020b125b95508160010b8460010b12806114e157508160010b8460010b1480156114e157508060ff168360ff1611155b156114f757839950829750819850809650611504565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b136115d4578560010b8760010b14156115395760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d60208110156115ad57600080fd5b50511690506115bb816115fc565b61ffff1698909801975050600190950194600019611512565b81156115e1576001880397505b82156115ee576001880397505b505050505050509392505050565b6000805b8215610c6857600019830190921691600101611600565b600082601f830112611627578081fd5b813561163a61163582611b6f565b611b4c565b81815284602083860101111561164e578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610c4457600080fd5b600060a0828403121561168b578081fd5b60405160a081016001600160401b03811182821017156116a757fe5b60405290508082356116b881611bc0565b815260208301356116c881611bc0565b602082015260408381013590820152606083013562ffffff811681146116ed57600080fd5b60608201526116fe6080840161170a565b60808201525092915050565b8035610c4481611bc0565b805161ffff81168114610c4457600080fd5b60008060408385031215611739578182fd5b82356001600160401b0381111561174e578283fd5b61175a85828601611617565b95602094909401359450505050565b60006020828403121561177a578081fd5b815161178581611bc0565b9392505050565b6000806040838503121561179e578182fd5b505080516020909101519092909150565b6000806000606084860312156117c3578081fd5b833592506020840135915060408401356001600160401b038111156117e6578182fd5b6117f286828701611617565b9150509250925092565b60006020828403121561180d578081fd5b81516001600160401b03811115611822578182fd5b8201601f81018413611832578182fd5b805161184061163582611b6f565b818152856020838501011115611854578384fd5b611865826020830160208601611b90565b95945050505050565b600060a0828403121561187f578081fd5b611785838361167a565b600080600080600080600060e0888a0312156118a3578485fd5b87516118ae81611bc0565b96506118bc60208901611668565b95506118ca60408901611715565b94506118d860608901611715565b93506118e660808901611715565b925060a088015163ffffffff811681146118fe578283fd5b60c08901519092508015158114611913578182fd5b8091505092959891949750929550565b600080600060608486031215611937578081fd5b83519250602084015161194981611bc0565b915061195760408501611668565b90509250925092565b60008151808452611978816020860160208601611b90565b601f01601f19169290920160200192915050565b606093841b6001600160601b0319908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529216604082015262ffffff909116606082015260800190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a060808201819052600090611a3f90830184611960565b979650505050505050565b6000602082526117856020830184611960565b60208082526010908201526f2ab732bc3832b1ba32b21032b93937b960811b604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611ad05784516001600160a01b031683529383019391830191600101611aab565b505084810360408601528651808252908201925081870190845b81811015611b0c57825163ffffffff1685529383019391830191600101611aea565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b6040518181016001600160401b0381118282101715611b6757fe5b604052919050565b60006001600160401b03821115611b8257fe5b50601f01601f191660200190565b60005b83811015611bab578181015183820152602001611b93565b83811115611bba576000848401525b50505050565b6001600160a01b0381168114611bd557600080fd5b5056fea2646970667358221220f5efdbb85949ab52544b8e4abdb7bcd492ccb2b2b7c73ed778ee78bd3d90c7aa64736f6c6343000706003300000000000000000000000041ff9aa7e16b8b1a8a8dc4f0efacd93d02d071c90000000000000000000000000bfbcf9fa4f9c56b0f40a671ad40e0805a0918650000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9