0x60806040526004361061016a5760003560e01c8063715018a6116100d15780639638c5181161008a578063dd62ed3e11610064578063dd62ed3e146104a3578063ee9d2f29146104e0578063f429389014610509578063f527240c1461052057610171565b80639638c51814610426578063a9059cbb1461044f578063c9567bf91461048c57610171565b8063715018a614610360578063751039fc146103775780638a8c523c1461038e5780638da5cb5b146103a55780638f9a55c0146103d057806395d89b41146103fb57610171565b8063313ce56711610123578063313ce567146102745780633c0fa7f91461029f578063511b5f61146102b657806351bc3c85146102e15780635519584d146102f857806370a082311461032357610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd146102095780632cedc854146102465780632f5f25721461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61054b565b6040516101989190612815565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906128d5565b610588565b6040516101d59190612930565b60405180910390f35b3480156101ea57600080fd5b506101f36105a6565b604051610200919061295a565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612975565b6105ca565b60405161023d9190612930565b60405180910390f35b34801561025257600080fd5b5061025b6106a3565b005b34801561026957600080fd5b50610272610788565b005b34801561028057600080fd5b50610289610877565b60405161029691906129e4565b60405180910390f35b3480156102ab57600080fd5b506102b4610880565b005b3480156102c257600080fd5b506102cb610997565b6040516102d8919061295a565b60405180910390f35b3480156102ed57600080fd5b506102f661099d565b005b34801561030457600080fd5b5061030d610a3a565b60405161031a919061295a565b60405180910390f35b34801561032f57600080fd5b5061034a600480360381019061034591906129ff565b610a40565b604051610357919061295a565b60405180910390f35b34801561036c57600080fd5b50610375610a89565b005b34801561038357600080fd5b5061038c610bdc565b005b34801561039a57600080fd5b506103a3610d0c565b005b3480156103b157600080fd5b506103ba611244565b6040516103c79190612a3b565b60405180910390f35b3480156103dc57600080fd5b506103e561126d565b6040516103f2919061295a565b60405180910390f35b34801561040757600080fd5b50610410611273565b60405161041d9190612815565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190612a56565b6112b0565b005b34801561045b57600080fd5b50610476600480360381019061047191906128d5565b61140b565b6040516104839190612930565b60405180910390f35b34801561049857600080fd5b506104a1611429565b005b3480156104af57600080fd5b506104ca60048036038101906104c59190612a83565b6114db565b6040516104d7919061295a565b60405180910390f35b3480156104ec57600080fd5b5061050760048036038101906105029190612b54565b611562565b005b34801561051557600080fd5b5061051e611696565b005b34801561052c57600080fd5b50610535611708565b604051610542919061295a565b60405180910390f35b60606040518060400160405280600981526020017f436861696e4d696e640000000000000000000000000000000000000000000000815250905090565b600061059c61059561170e565b8484611716565b6001905092915050565b60006009600a6105b69190612d16565b633b9aca006105c59190612d61565b905090565b60006105d78484846118df565b610698846105e361170e565b61069385604051806060016040528060288152602001613a1960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064961170e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122549092919063ffffffff16565b611716565b600190509392505050565b6106ab61170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f90612def565b60405180910390fd5b60016009546107479190612e0f565b600d819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea7260075460405161077e919061295a565b60405180910390a1565b61079061170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612def565b60405180910390fd5b6000600c819055506000600581905550600060068190555060006007819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea72600060405161086d9190612e88565b60405180910390a1565b60006009905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c161170e565b73ffffffffffffffffffffffffffffffffffffffff1614610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e90612f15565b60405180910390fd5b600061092230610a40565b905060008111610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90612f81565b60405180910390fd5b61099430600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118df565b50565b600e5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109de61170e565b73ffffffffffffffffffffffffffffffffffffffff16146109fe57600080fd5b6000610a0930610a40565b90506000811115610a1e57610a1d816122b8565b5b60004790506000811115610a3657610a3581612531565b5b5050565b60115481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a9161170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590612def565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610be461170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890612def565b60405180910390fd5b6009600a610c7f9190612d16565b633b9aca00610c8e9190612d61565b600e819055506009600a610ca29190612d16565b633b9aca00610cb19190612d61565b600f819055507fcc18a23b5455befc64930dd79aa26a968e67d6953c8c9b683acf16d4c26fff5c6009600a610ce69190612d16565b633b9aca00610cf59190612d61565b604051610d02919061295a565b60405180910390a1565b610d1461170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612def565b60405180910390fd5b601360179054906101000a900460ff1615610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890612fed565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e8f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e7b9190612d16565b633b9aca00610e8a9190612d61565b611716565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613022565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190613022565b6040518363ffffffff1660e01b8152600401610fea92919061304f565b6020604051808303816000875af1158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190613022565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110b630610a40565b6000806110c1611244565b426040518863ffffffff1660e01b81526004016110e396959493929190613078565b60606040518083038185885af1158015611101573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061112691906130ee565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111c8929190613141565b6020604051808303816000875af11580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b919061317f565b506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600481526020017f4d494e4400000000000000000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112f161170e565b73ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90612f15565b60405180910390fd5b6000811161138a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113819061321e565b60405180910390fd5b600061139530610a40565b9050818110156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061328a565b60405180910390fd5b61140730600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118df565b5050565b600061141f61141861170e565b84846118df565b6001905092915050565b61143161170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590612def565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61156a61170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90612def565b60405180910390fd5b60005b8383905081101561169057816003600086868581811061161d5761161c6132aa565b5b905060200201602081019061163291906129ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506115fa565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116d761170e565b73ffffffffffffffffffffffffffffffffffffffff16146116f757600080fd5b600047905061170581612531565b50565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061334b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb906133dd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d2919061295a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061346f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b490613501565b60405180910390fd5b60008111611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613593565b60405180910390fd5b6000611a0a611244565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a785750611a48611244565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9757600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ae8575060011515601360149054906101000a900460ff161515145b611af157600080fd5b6000600d5403611b3a57611b376064611b29600954600d5411611b1657600554611b1a565b6007545b8561259d90919063ffffffff16565b61261790919063ffffffff16565b90505b6000600d541115611b7057611b6d6064611b5f600c548561259d90919063ffffffff16565b61261790919063ffffffff16565b90505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c1b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c715750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6a57600e54821115611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb2906135ff565b60405180910390fd5b600f5482611cc885610a40565b611cd29190612e0f565b1115611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a9061366b565b60405180910390fd5b611d4f6064611d41600954600d5411611d2e57600554611d32565b6007545b8561259d90919063ffffffff16565b61261790919063ffffffff16565b9050600d6000815480929190611d649061368b565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611df357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e3757611e346064611e26600a54600d5411611e1357600654611e17565b6008545b8561259d90919063ffffffff16565b61261790919063ffffffff16565b90505b6000611e4230610a40565b9050601360159054906101000a900460ff16158015611eae5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ec65750601360169054906101000a900460ff165b8015611ed3575060105481115b8015611ee25750600b54600d54115b15611f9557601554431115611efa5760006014819055505b600760145410611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369061371f565b60405180910390fd5b611f5c611f5784611f5284601154612661565b612661565b6122b8565b60004790506000811115611f7457611f7347612531565b5b60146000815480929190611f879061368b565b919050555043601581905550505b505b600081111561209b57611ff281600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267a90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612092919061295a565b60405180910390a35b6120ed82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219461214682846126d890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267a90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61223984866126d890919063ffffffff16565b604051612246919061295a565b60405180910390a350505050565b600083831115829061229c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122939190612815565b60405180910390fd5b50600083856122ab919061373f565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122f0576122ef613773565b5b60405190808252806020026020018201604052801561231e5781602001602082028036833780820191505090505b5090503081600081518110612336576123356132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190613022565b81600181518110612415576124146132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061247c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611716565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124e0959493929190613860565b600060405180830381600087803b1580156124fa57600080fd5b505af115801561250e573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612599573d6000803e3d6000fd5b5050565b60008083036125af5760009050612611565b600082846125bd9190612d61565b90508284826125cc91906138e9565b1461260c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126039061398c565b60405180910390fd5b809150505b92915050565b600061265983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612722565b905092915050565b60008183106126705781612672565b825b905092915050565b60008082846126899190612e0f565b9050838110156126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c5906139f8565b60405180910390fd5b8091505092915050565b600061271a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612254565b905092915050565b60008083118290612769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127609190612815565b60405180910390fd5b506000838561277891906138e9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127bf5780820151818401526020810190506127a4565b60008484015250505050565b6000601f19601f8301169050919050565b60006127e782612785565b6127f18185612790565b93506128018185602086016127a1565b61280a816127cb565b840191505092915050565b6000602082019050818103600083015261282f81846127dc565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286c82612841565b9050919050565b61287c81612861565b811461288757600080fd5b50565b60008135905061289981612873565b92915050565b6000819050919050565b6128b28161289f565b81146128bd57600080fd5b50565b6000813590506128cf816128a9565b92915050565b600080604083850312156128ec576128eb612837565b5b60006128fa8582860161288a565b925050602061290b858286016128c0565b9150509250929050565b60008115159050919050565b61292a81612915565b82525050565b60006020820190506129456000830184612921565b92915050565b6129548161289f565b82525050565b600060208201905061296f600083018461294b565b92915050565b60008060006060848603121561298e5761298d612837565b5b600061299c8682870161288a565b93505060206129ad8682870161288a565b92505060406129be868287016128c0565b9150509250925092565b600060ff82169050919050565b6129de816129c8565b82525050565b60006020820190506129f960008301846129d5565b92915050565b600060208284031215612a1557612a14612837565b5b6000612a238482850161288a565b91505092915050565b612a3581612861565b82525050565b6000602082019050612a506000830184612a2c565b92915050565b600060208284031215612a6c57612a6b612837565b5b6000612a7a848285016128c0565b91505092915050565b60008060408385031215612a9a57612a99612837565b5b6000612aa88582860161288a565b9250506020612ab98582860161288a565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ae857612ae7612ac3565b5b8235905067ffffffffffffffff811115612b0557612b04612ac8565b5b602083019150836020820283011115612b2157612b20612acd565b5b9250929050565b612b3181612915565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600080600060408486031215612b6d57612b6c612837565b5b600084013567ffffffffffffffff811115612b8b57612b8a61283c565b5b612b9786828701612ad2565b93509350506020612baa86828701612b3f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612c3a57808604811115612c1657612c15612bb4565b5b6001851615612c255780820291505b8081029050612c3385612be3565b9450612bfa565b94509492505050565b600082612c535760019050612d0f565b81612c615760009050612d0f565b8160018114612c775760028114612c8157612cb0565b6001915050612d0f565b60ff841115612c9357612c92612bb4565b5b8360020a915084821115612caa57612ca9612bb4565b5b50612d0f565b5060208310610133831016604e8410600b8410161715612ce55782820a905083811115612ce057612cdf612bb4565b5b612d0f565b612cf28484846001612bf0565b92509050818404811115612d0957612d08612bb4565b5b81810290505b9392505050565b6000612d218261289f565b9150612d2c836129c8565b9250612d597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c43565b905092915050565b6000612d6c8261289f565b9150612d778361289f565b9250828202612d858161289f565b91508282048414831517612d9c57612d9b612bb4565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612dd9602083612790565b9150612de482612da3565b602082019050919050565b60006020820190508181036000830152612e0881612dcc565b9050919050565b6000612e1a8261289f565b9150612e258361289f565b9250828201905080821115612e3d57612e3c612bb4565b5b92915050565b6000819050919050565b6000819050919050565b6000612e72612e6d612e6884612e43565b612e4d565b61289f565b9050919050565b612e8281612e57565b82525050565b6000602082019050612e9d6000830184612e79565b92915050565b7f4f6e6c792066656520636f6c6c6563746f722063616e2063616c6c207468697360008201527f2066756e6374696f6e0000000000000000000000000000000000000000000000602082015250565b6000612eff602983612790565b9150612f0a82612ea3565b604082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b7f4e6f20746f6b656e7320746f2073656e64000000000000000000000000000000600082015250565b6000612f6b601183612790565b9150612f7682612f35565b602082019050919050565b60006020820190508181036000830152612f9a81612f5e565b9050919050565b7f54726164696e6720697320616c726561647920456e61626c6564000000000000600082015250565b6000612fd7601a83612790565b9150612fe282612fa1565b602082019050919050565b6000602082019050818103600083015261300681612fca565b9050919050565b60008151905061301c81612873565b92915050565b60006020828403121561303857613037612837565b5b60006130468482850161300d565b91505092915050565b60006040820190506130646000830185612a2c565b6130716020830184612a2c565b9392505050565b600060c08201905061308d6000830189612a2c565b61309a602083018861294b565b6130a76040830187612e79565b6130b46060830186612e79565b6130c16080830185612a2c565b6130ce60a083018461294b565b979650505050505050565b6000815190506130e8816128a9565b92915050565b60008060006060848603121561310757613106612837565b5b6000613115868287016130d9565b9350506020613126868287016130d9565b9250506040613137868287016130d9565b9150509250925092565b60006040820190506131566000830185612a2c565b613163602083018461294b565b9392505050565b60008151905061317981612b28565b92915050565b60006020828403121561319557613194612837565b5b60006131a38482850161316a565b91505092915050565b7f546f6b656e20616d6f756e74206d75737420626520677265617465722074686160008201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b6000613208602683612790565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f496e73756666696369656e742062616c616e636520696e20636f6e7472616374600082015250565b6000613274602083612790565b915061327f8261323e565b602082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613335602483612790565b9150613340826132d9565b604082019050919050565b6000602082019050818103600083015261336481613328565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133c7602283612790565b91506133d28261336b565b604082019050919050565b600060208201905081810360008301526133f6816133ba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613459602583612790565b9150613464826133fd565b604082019050919050565b600060208201905081810360008301526134888161344c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134eb602383612790565b91506134f68261348f565b604082019050919050565b6000602082019050818103600083015261351a816134de565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061357d602983612790565b915061358882613521565b604082019050919050565b600060208201905081810360008301526135ac81613570565b9050919050565b7f4578636565647320746865205f6d6178547853697a652e000000000000000000600082015250565b60006135e9601783612790565b91506135f4826135b3565b602082019050919050565b60006020820190508181036000830152613618816135dc565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613655601a83612790565b91506136608261361f565b602082019050919050565b6000602082019050818103600083015261368481613648565b9050919050565b60006136968261289f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136c8576136c7612bb4565b5b600182019050919050565b7f4f6e6c7920372073656c6c732070657220626c6f636b21000000000000000000600082015250565b6000613709601783612790565b9150613714826136d3565b602082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b600061374a8261289f565b91506137558361289f565b925082820390508181111561376d5761376c612bb4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137d781612861565b82525050565b60006137e983836137ce565b60208301905092915050565b6000602082019050919050565b600061380d826137a2565b61381781856137ad565b9350613822836137be565b8060005b8381101561385357815161383a88826137dd565b9750613845836137f5565b925050600181019050613826565b5085935050505092915050565b600060a082019050613875600083018861294b565b6138826020830187612e79565b81810360408301526138948186613802565b90506138a36060830185612a2c565b6138b0608083018461294b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138f48261289f565b91506138ff8361289f565b92508261390f5761390e6138ba565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613976602183612790565b91506139818261391a565b604082019050919050565b600060208201905081810360008301526139a581613969565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139e2601b83612790565b91506139ed826139ac565b602082019050919050565b60006020820190508181036000830152613a11816139d5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122031762f5ebf826f24da67accb218df49ee7bd938463e241234e231be35d48729964736f6c634300081b0033
0x6080604052600e600555601e6006556004600755600460085560786009556021600a556021600b556000600c556000600d5560646009600a61004191906106b9565b633b9aca006100509190610704565b61005a9190610775565b60026100669190610704565b600e5560646009600a61007991906106b9565b633b9aca006100889190610704565b6100929190610775565b600261009e9190610704565b600f556103e86009600a6100b291906106b9565b633b9aca006100c19190610704565b6100cb9190610775565b60016100d79190610704565b60105560646009600a6100ea91906106b9565b633b9aca006100f99190610704565b6101039190610775565b600161010f9190610704565b6011556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff0219169083151502179055506000601455600060155534801561017957600080fd5b50600061018a61050f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073f67b043e0f39280a29ef1dbfcfacbff59ffee443600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61028b91906106b9565b633b9aca0061029a9190610704565b600160006102ac61050f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006102fe61051760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061048961050f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104e691906106b9565b633b9aca006104f59190610704565b60405161050291906107b5565b60405180910390a36107d0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156105c6578086048111156105a2576105a1610540565b5b60018516156105b15780820291505b80810290506105bf8561056f565b9450610586565b94509492505050565b6000826105df576001905061069b565b816105ed576000905061069b565b8160018114610603576002811461060d5761063c565b600191505061069b565b60ff84111561061f5761061e610540565b5b8360020a91508482111561063657610635610540565b5b5061069b565b5060208310610133831016604e8410600b84101617156106715782820a90508381111561066c5761066b610540565b5b61069b565b61067e848484600161057c565b9250905081840481111561069557610694610540565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006106c4826106a2565b91506106cf836106ac565b92506106fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846105cf565b905092915050565b600061070f826106a2565b915061071a836106a2565b9250828202610728816106a2565b9150828204841483151761073f5761073e610540565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610780826106a2565b915061078b836106a2565b92508261079b5761079a610746565b5b828204905092915050565b6107af816106a2565b82525050565b60006020820190506107ca60008301846107a6565b92915050565b613a76806107df6000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d15780639638c5181161008a578063dd62ed3e11610064578063dd62ed3e146104a3578063ee9d2f29146104e0578063f429389014610509578063f527240c1461052057610171565b80639638c51814610426578063a9059cbb1461044f578063c9567bf91461048c57610171565b8063715018a614610360578063751039fc146103775780638a8c523c1461038e5780638da5cb5b146103a55780638f9a55c0146103d057806395d89b41146103fb57610171565b8063313ce56711610123578063313ce567146102745780633c0fa7f91461029f578063511b5f61146102b657806351bc3c85146102e15780635519584d146102f857806370a082311461032357610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd146102095780632cedc854146102465780632f5f25721461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61054b565b6040516101989190612815565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906128d5565b610588565b6040516101d59190612930565b60405180910390f35b3480156101ea57600080fd5b506101f36105a6565b604051610200919061295a565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612975565b6105ca565b60405161023d9190612930565b60405180910390f35b34801561025257600080fd5b5061025b6106a3565b005b34801561026957600080fd5b50610272610788565b005b34801561028057600080fd5b50610289610877565b60405161029691906129e4565b60405180910390f35b3480156102ab57600080fd5b506102b4610880565b005b3480156102c257600080fd5b506102cb610997565b6040516102d8919061295a565b60405180910390f35b3480156102ed57600080fd5b506102f661099d565b005b34801561030457600080fd5b5061030d610a3a565b60405161031a919061295a565b60405180910390f35b34801561032f57600080fd5b5061034a600480360381019061034591906129ff565b610a40565b604051610357919061295a565b60405180910390f35b34801561036c57600080fd5b50610375610a89565b005b34801561038357600080fd5b5061038c610bdc565b005b34801561039a57600080fd5b506103a3610d0c565b005b3480156103b157600080fd5b506103ba611244565b6040516103c79190612a3b565b60405180910390f35b3480156103dc57600080fd5b506103e561126d565b6040516103f2919061295a565b60405180910390f35b34801561040757600080fd5b50610410611273565b60405161041d9190612815565b60405180910390f35b34801561043257600080fd5b5061044d60048036038101906104489190612a56565b6112b0565b005b34801561045b57600080fd5b50610476600480360381019061047191906128d5565b61140b565b6040516104839190612930565b60405180910390f35b34801561049857600080fd5b506104a1611429565b005b3480156104af57600080fd5b506104ca60048036038101906104c59190612a83565b6114db565b6040516104d7919061295a565b60405180910390f35b3480156104ec57600080fd5b5061050760048036038101906105029190612b54565b611562565b005b34801561051557600080fd5b5061051e611696565b005b34801561052c57600080fd5b50610535611708565b604051610542919061295a565b60405180910390f35b60606040518060400160405280600981526020017f436861696e4d696e640000000000000000000000000000000000000000000000815250905090565b600061059c61059561170e565b8484611716565b6001905092915050565b60006009600a6105b69190612d16565b633b9aca006105c59190612d61565b905090565b60006105d78484846118df565b610698846105e361170e565b61069385604051806060016040528060288152602001613a1960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064961170e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122549092919063ffffffff16565b611716565b600190509392505050565b6106ab61170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f90612def565b60405180910390fd5b60016009546107479190612e0f565b600d819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea7260075460405161077e919061295a565b60405180910390a1565b61079061170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612def565b60405180910390fd5b6000600c819055506000600581905550600060068190555060006007819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea72600060405161086d9190612e88565b60405180910390a1565b60006009905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c161170e565b73ffffffffffffffffffffffffffffffffffffffff1614610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e90612f15565b60405180910390fd5b600061092230610a40565b905060008111610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90612f81565b60405180910390fd5b61099430600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118df565b50565b600e5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109de61170e565b73ffffffffffffffffffffffffffffffffffffffff16146109fe57600080fd5b6000610a0930610a40565b90506000811115610a1e57610a1d816122b8565b5b60004790506000811115610a3657610a3581612531565b5b5050565b60115481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a9161170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590612def565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610be461170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890612def565b60405180910390fd5b6009600a610c7f9190612d16565b633b9aca00610c8e9190612d61565b600e819055506009600a610ca29190612d16565b633b9aca00610cb19190612d61565b600f819055507fcc18a23b5455befc64930dd79aa26a968e67d6953c8c9b683acf16d4c26fff5c6009600a610ce69190612d16565b633b9aca00610cf59190612d61565b604051610d02919061295a565b60405180910390a1565b610d1461170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612def565b60405180910390fd5b601360179054906101000a900460ff1615610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890612fed565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e8f30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e7b9190612d16565b633b9aca00610e8a9190612d61565b611716565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613022565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190613022565b6040518363ffffffff1660e01b8152600401610fea92919061304f565b6020604051808303816000875af1158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190613022565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110b630610a40565b6000806110c1611244565b426040518863ffffffff1660e01b81526004016110e396959493929190613078565b60606040518083038185885af1158015611101573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061112691906130ee565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111c8929190613141565b6020604051808303816000875af11580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b919061317f565b506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600481526020017f4d494e4400000000000000000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112f161170e565b73ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90612f15565b60405180910390fd5b6000811161138a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113819061321e565b60405180910390fd5b600061139530610a40565b9050818110156113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061328a565b60405180910390fd5b61140730600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118df565b5050565b600061141f61141861170e565b84846118df565b6001905092915050565b61143161170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590612def565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61156a61170e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90612def565b60405180910390fd5b60005b8383905081101561169057816003600086868581811061161d5761161c6132aa565b5b905060200201602081019061163291906129ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506115fa565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116d761170e565b73ffffffffffffffffffffffffffffffffffffffff16146116f757600080fd5b600047905061170581612531565b50565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061334b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb906133dd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d2919061295a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361194e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119459061346f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b490613501565b60405180910390fd5b60008111611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613593565b60405180910390fd5b6000611a0a611244565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a785750611a48611244565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9757600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ae8575060011515601360149054906101000a900460ff161515145b611af157600080fd5b6000600d5403611b3a57611b376064611b29600954600d5411611b1657600554611b1a565b6007545b8561259d90919063ffffffff16565b61261790919063ffffffff16565b90505b6000600d541115611b7057611b6d6064611b5f600c548561259d90919063ffffffff16565b61261790919063ffffffff16565b90505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c1b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c715750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6a57600e54821115611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb2906135ff565b60405180910390fd5b600f5482611cc885610a40565b611cd29190612e0f565b1115611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a9061366b565b60405180910390fd5b611d4f6064611d41600954600d5411611d2e57600554611d32565b6007545b8561259d90919063ffffffff16565b61261790919063ffffffff16565b9050600d6000815480929190611d649061368b565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611df357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e3757611e346064611e26600a54600d5411611e1357600654611e17565b6008545b8561259d90919063ffffffff16565b61261790919063ffffffff16565b90505b6000611e4230610a40565b9050601360159054906101000a900460ff16158015611eae5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ec65750601360169054906101000a900460ff165b8015611ed3575060105481115b8015611ee25750600b54600d54115b15611f9557601554431115611efa5760006014819055505b600760145410611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369061371f565b60405180910390fd5b611f5c611f5784611f5284601154612661565b612661565b6122b8565b60004790506000811115611f7457611f7347612531565b5b60146000815480929190611f879061368b565b919050555043601581905550505b505b600081111561209b57611ff281600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267a90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612092919061295a565b60405180910390a35b6120ed82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219461214682846126d890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267a90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61223984866126d890919063ffffffff16565b604051612246919061295a565b60405180910390a350505050565b600083831115829061229c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122939190612815565b60405180910390fd5b50600083856122ab919061373f565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122f0576122ef613773565b5b60405190808252806020026020018201604052801561231e5781602001602082028036833780820191505090505b5090503081600081518110612336576123356132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190613022565b81600181518110612415576124146132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061247c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611716565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124e0959493929190613860565b600060405180830381600087803b1580156124fa57600080fd5b505af115801561250e573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612599573d6000803e3d6000fd5b5050565b60008083036125af5760009050612611565b600082846125bd9190612d61565b90508284826125cc91906138e9565b1461260c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126039061398c565b60405180910390fd5b809150505b92915050565b600061265983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612722565b905092915050565b60008183106126705781612672565b825b905092915050565b60008082846126899190612e0f565b9050838110156126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c5906139f8565b60405180910390fd5b8091505092915050565b600061271a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612254565b905092915050565b60008083118290612769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127609190612815565b60405180910390fd5b506000838561277891906138e9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127bf5780820151818401526020810190506127a4565b60008484015250505050565b6000601f19601f8301169050919050565b60006127e782612785565b6127f18185612790565b93506128018185602086016127a1565b61280a816127cb565b840191505092915050565b6000602082019050818103600083015261282f81846127dc565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286c82612841565b9050919050565b61287c81612861565b811461288757600080fd5b50565b60008135905061289981612873565b92915050565b6000819050919050565b6128b28161289f565b81146128bd57600080fd5b50565b6000813590506128cf816128a9565b92915050565b600080604083850312156128ec576128eb612837565b5b60006128fa8582860161288a565b925050602061290b858286016128c0565b9150509250929050565b60008115159050919050565b61292a81612915565b82525050565b60006020820190506129456000830184612921565b92915050565b6129548161289f565b82525050565b600060208201905061296f600083018461294b565b92915050565b60008060006060848603121561298e5761298d612837565b5b600061299c8682870161288a565b93505060206129ad8682870161288a565b92505060406129be868287016128c0565b9150509250925092565b600060ff82169050919050565b6129de816129c8565b82525050565b60006020820190506129f960008301846129d5565b92915050565b600060208284031215612a1557612a14612837565b5b6000612a238482850161288a565b91505092915050565b612a3581612861565b82525050565b6000602082019050612a506000830184612a2c565b92915050565b600060208284031215612a6c57612a6b612837565b5b6000612a7a848285016128c0565b91505092915050565b60008060408385031215612a9a57612a99612837565b5b6000612aa88582860161288a565b9250506020612ab98582860161288a565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ae857612ae7612ac3565b5b8235905067ffffffffffffffff811115612b0557612b04612ac8565b5b602083019150836020820283011115612b2157612b20612acd565b5b9250929050565b612b3181612915565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600080600060408486031215612b6d57612b6c612837565b5b600084013567ffffffffffffffff811115612b8b57612b8a61283c565b5b612b9786828701612ad2565b93509350506020612baa86828701612b3f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612c3a57808604811115612c1657612c15612bb4565b5b6001851615612c255780820291505b8081029050612c3385612be3565b9450612bfa565b94509492505050565b600082612c535760019050612d0f565b81612c615760009050612d0f565b8160018114612c775760028114612c8157612cb0565b6001915050612d0f565b60ff841115612c9357612c92612bb4565b5b8360020a915084821115612caa57612ca9612bb4565b5b50612d0f565b5060208310610133831016604e8410600b8410161715612ce55782820a905083811115612ce057612cdf612bb4565b5b612d0f565b612cf28484846001612bf0565b92509050818404811115612d0957612d08612bb4565b5b81810290505b9392505050565b6000612d218261289f565b9150612d2c836129c8565b9250612d597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c43565b905092915050565b6000612d6c8261289f565b9150612d778361289f565b9250828202612d858161289f565b91508282048414831517612d9c57612d9b612bb4565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612dd9602083612790565b9150612de482612da3565b602082019050919050565b60006020820190508181036000830152612e0881612dcc565b9050919050565b6000612e1a8261289f565b9150612e258361289f565b9250828201905080821115612e3d57612e3c612bb4565b5b92915050565b6000819050919050565b6000819050919050565b6000612e72612e6d612e6884612e43565b612e4d565b61289f565b9050919050565b612e8281612e57565b82525050565b6000602082019050612e9d6000830184612e79565b92915050565b7f4f6e6c792066656520636f6c6c6563746f722063616e2063616c6c207468697360008201527f2066756e6374696f6e0000000000000000000000000000000000000000000000602082015250565b6000612eff602983612790565b9150612f0a82612ea3565b604082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b7f4e6f20746f6b656e7320746f2073656e64000000000000000000000000000000600082015250565b6000612f6b601183612790565b9150612f7682612f35565b602082019050919050565b60006020820190508181036000830152612f9a81612f5e565b9050919050565b7f54726164696e6720697320616c726561647920456e61626c6564000000000000600082015250565b6000612fd7601a83612790565b9150612fe282612fa1565b602082019050919050565b6000602082019050818103600083015261300681612fca565b9050919050565b60008151905061301c81612873565b92915050565b60006020828403121561303857613037612837565b5b60006130468482850161300d565b91505092915050565b60006040820190506130646000830185612a2c565b6130716020830184612a2c565b9392505050565b600060c08201905061308d6000830189612a2c565b61309a602083018861294b565b6130a76040830187612e79565b6130b46060830186612e79565b6130c16080830185612a2c565b6130ce60a083018461294b565b979650505050505050565b6000815190506130e8816128a9565b92915050565b60008060006060848603121561310757613106612837565b5b6000613115868287016130d9565b9350506020613126868287016130d9565b9250506040613137868287016130d9565b9150509250925092565b60006040820190506131566000830185612a2c565b613163602083018461294b565b9392505050565b60008151905061317981612b28565b92915050565b60006020828403121561319557613194612837565b5b60006131a38482850161316a565b91505092915050565b7f546f6b656e20616d6f756e74206d75737420626520677265617465722074686160008201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b6000613208602683612790565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f496e73756666696369656e742062616c616e636520696e20636f6e7472616374600082015250565b6000613274602083612790565b915061327f8261323e565b602082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613335602483612790565b9150613340826132d9565b604082019050919050565b6000602082019050818103600083015261336481613328565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133c7602283612790565b91506133d28261336b565b604082019050919050565b600060208201905081810360008301526133f6816133ba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613459602583612790565b9150613464826133fd565b604082019050919050565b600060208201905081810360008301526134888161344c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134eb602383612790565b91506134f68261348f565b604082019050919050565b6000602082019050818103600083015261351a816134de565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061357d602983612790565b915061358882613521565b604082019050919050565b600060208201905081810360008301526135ac81613570565b9050919050565b7f4578636565647320746865205f6d6178547853697a652e000000000000000000600082015250565b60006135e9601783612790565b91506135f4826135b3565b602082019050919050565b60006020820190508181036000830152613618816135dc565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613655601a83612790565b91506136608261361f565b602082019050919050565b6000602082019050818103600083015261368481613648565b9050919050565b60006136968261289f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136c8576136c7612bb4565b5b600182019050919050565b7f4f6e6c7920372073656c6c732070657220626c6f636b21000000000000000000600082015250565b6000613709601783612790565b9150613714826136d3565b602082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b600061374a8261289f565b91506137558361289f565b925082820390508181111561376d5761376c612bb4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137d781612861565b82525050565b60006137e983836137ce565b60208301905092915050565b6000602082019050919050565b600061380d826137a2565b61381781856137ad565b9350613822836137be565b8060005b8381101561385357815161383a88826137dd565b9750613845836137f5565b925050600181019050613826565b5085935050505092915050565b600060a082019050613875600083018861294b565b6138826020830187612e79565b81810360408301526138948186613802565b90506138a36060830185612a2c565b6138b0608083018461294b565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138f48261289f565b91506138ff8361289f565b92508261390f5761390e6138ba565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613976602183612790565b91506139818261391a565b604082019050919050565b600060208201905081810360008301526139a581613969565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139e2601b83612790565b91506139ed826139ac565b602082019050919050565b60006020820190508181036000830152613a11816139d5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122031762f5ebf826f24da67accb218df49ee7bd938463e241234e231be35d48729964736f6c634300081b0033