0x608060405234801561001057600080fd5b50604051610cc0380380610cc083398181016040528101906100329190610064565b8260008190555081600181905550806002819055505050506100dd565b60008151905061005e816100c6565b92915050565b60008060006060848603121561007d5761007c6100c1565b5b600061008b8682870161004f565b935050602061009c8682870161004f565b92505060406100ad8682870161004f565b9150509250925092565b6000819050919050565b600080fd5b6100cf816100b7565b81146100da57600080fd5b50565b610bd4806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637d2b87c01461005157806398d5fdca14610081578063b54b4fb91461009f578063fa8038a3146100cf575b600080fd5b61006b60048036038101906100669190610644565b6100ff565b6040516100789190610721565b60405180910390f35b610089610133565b6040516100969190610721565b60405180910390f35b6100b960048036038101906100b491906106e5565b610167565b6040516100c69190610721565b60405180910390f35b6100e960048036038101906100e49190610671565b61019b565b6040516100f69190610721565b60405180910390f35b60006040517fc1b9a99e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040517fc1b9a99e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040517fc1b9a99e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806101ed84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206104c6565b905060008190506000600460025461020591906107c9565b905061020f61055b565b60005b60248160ff16146102e2576000838261022b91906107fa565b60016102379190610792565b60ff16600254610247919061099c565b609061025391906109f6565b905060016002546002610266919061087e565b61027091906109f6565b8161ffff168673ffffffffffffffffffffffffffffffffffffffff16901c73ffffffffffffffffffffffffffffffffffffffff1616838360ff16602481106102bb576102ba610b44565b5b602002019061ffff16908161ffff168152505083826102da9190610792565b915050610212565b506102eb61057e565b6102f36105a1565b60005b60248160ff161461044b57818160ff166024811061031757610316610b44565b5b60200201511561033457848161032d9190610792565b9050610446565b60005b60248160ff1614610436578060ff168260ff16148061036d5750828160ff166024811061036757610366610b44565b5b60200201515b1561038557858161037e9190610792565b9050610431565b848160ff166024811061039b5761039a610b44565b5b602002015161ffff16858360ff16602481106103ba576103b9610b44565b5b602002015161ffff161415610422576001838260ff16602481106103e1576103e0610b44565b5b602002019015159081151581525050838260ff166024811061040657610405610b44565b5b60200201805161041590610abc565b60ff16908160ff16815250505b858161042e9190610792565b90505b610337565b5084816104439190610792565b90505b6102f6565b506000805b60248160ff161461049657838160ff166024811061047157610470610b44565b5b6020020151826104819190610792565b9150858161048f9190610792565b9050610450565b506001548160ff166104a8919061099c565b6000546104b5919061073c565b975050505050505050949350505050565b60008060005b60148114610549576008816104e1919061099c565b60ff60f81b8683876104f3919061073c565b8151811061050457610503610b44565b5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c821791508061054290610a73565b90506104cc565b50606081901c60001c91505092915050565b604051806104800160405280602490602082028036833780820191505090505090565b604051806104800160405280602490602082028036833780820191505090505090565b604051806104800160405280602490602082028036833780820191505090505090565b6000813590506105d381610b99565b92915050565b60008083601f8401126105ef576105ee610b78565b5b8235905067ffffffffffffffff81111561060c5761060b610b73565b5b60208301915083600182028301111561062857610627610b7d565b5b9250929050565b60008135905061063e81610bb0565b92915050565b60006020828403121561065a57610659610b87565b5b6000610668848285016105c4565b91505092915050565b6000806000806060858703121561068b5761068a610b87565b5b6000610699878288016105c4565b94505060206106aa8782880161062f565b935050604085013567ffffffffffffffff8111156106cb576106ca610b82565b5b6106d7878288016105d9565b925092505092959194509250565b6000602082840312156106fb576106fa610b87565b5b60006107098482850161062f565b91505092915050565b61071b81610a5c565b82525050565b60006020820190506107366000830184610712565b92915050565b600061074782610a5c565b915061075283610a5c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561078757610786610ae6565b5b828201905092915050565b600061079d82610a66565b91506107a883610a66565b92508260ff038211156107be576107bd610ae6565b5b828201905092915050565b60006107d482610a5c565b91506107df83610a5c565b9250826107ef576107ee610b15565b5b828204905092915050565b600061080582610a66565b915061081083610a66565b9250826108205761081f610b15565b5b828204905092915050565b6000808291508390505b60018511156108755780860481111561085157610850610ae6565b5b60018516156108605780820291505b808102905061086e85610b8c565b9450610835565b94509492505050565b600061088982610a5c565b915061089483610a5c565b92506108c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846108c9565b905092915050565b6000826108d95760019050610995565b816108e75760009050610995565b81600181146108fd576002811461090757610936565b6001915050610995565b60ff84111561091957610918610ae6565b5b8360020a9150848211156109305761092f610ae6565b5b50610995565b5060208310610133831016604e8410600b841016171561096b5782820a90508381111561096657610965610ae6565b5b610995565b610978848484600161082b565b9250905081840481111561098f5761098e610ae6565b5b81810290505b9392505050565b60006109a782610a5c565b91506109b283610a5c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156109eb576109ea610ae6565b5b828202905092915050565b6000610a0182610a5c565b9150610a0c83610a5c565b925082821015610a1f57610a1e610ae6565b5b828203905092915050565b6000610a3582610a3c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000610a7e82610a5c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ab157610ab0610ae6565b5b600182019050919050565b6000610ac782610a66565b915060ff821415610adb57610ada610ae6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008160011c9050919050565b610ba281610a2a565b8114610bad57600080fd5b50565b610bb981610a5c565b8114610bc457600080fd5b5056fea164736f6c6343000806000a000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000027f7d0bdb920000000000000000000000000000000000000000000000000000000000000000010