0x6080604052734200000000000000000000000000000000000006600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000bb57600080fd5b50620000cc6200015960201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001415760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200013891906200026a565b60405180910390fd5b62000152816200016160201b60201c565b5062000287565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002528262000225565b9050919050565b620002648162000245565b82525050565b600060208201905062000281600083018462000259565b92915050565b611ded80620002976000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063715018a611610066578063715018a6146101085780638091f3bf146101125780638da5cb5b14610130578063c5af81e11461014e578063f2fde38b1461016a57610093565b8063015405ea1461009857806361821fc8146100b457806363f08175146100d05780636cc21f75146100ec575b600080fd5b6100b260048036038101906100ad9190611472565b610186565b005b6100ce60048036038101906100c991906114b2565b6106a4565b005b6100ea60048036038101906100e5919061157e565b610893565b005b61010660048036038101906101019190611628565b610b09565b005b610110610c9e565b005b61011a610cb2565b6040516101279190611696565b60405180910390f35b610138610cc5565b60405161014591906116c0565b60405180910390f35b61016860048036038101906101639190611628565b610cee565b005b610184600480360381019061017f91906116db565b6110d6565b005b61019661019161115c565b611164565b6101d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cc90611765565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161023791906116c0565b602060405180830381865afa158015610254573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610278919061179a565b90506000670de0b6b3a76400008261029091906117f6565b905060008373ffffffffffffffffffffffffffffffffffffffff166323b872dd600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b81526004016102f393929190611839565b6020604051808303816000875af1158015610312573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610336919061189c565b90508061034257600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103b157600080fd5b505af11580156103c5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104469291906118c9565b6020604051808303816000875af1158015610465573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610489919061189c565b6104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bf9061193e565b60405180910390fd5b6000600267ffffffffffffffff8111156104e5576104e461195e565b5b6040519080825280602002602001820160405280156105135781602001602082028036833780820191505090505b509050878160008151811061052b5761052a61198d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061059c5761059b61198d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5856000848b6103844261062791906119bc565b6040518663ffffffff1660e01b8152600401610647959493929190611af3565b6000604051808303816000875af1158015610666573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061068f9190611c6d565b5061069a60006111fb565b5050505050505050565b6106ac6112b5565b83600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107ba60016111fb565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c92ced02600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b815260040161083f929190611cb6565b600060405180830381600087803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b505050506001600660146101000a81548160ff0219169083151502179055505050505050565b61089b6112b5565b600084905060005b84849050811015610b015760008273ffffffffffffffffffffffffffffffffffffffff166370a082318787858181106108df576108de61198d565b5b90506020020160208101906108f491906116db565b6040518263ffffffff1660e01b815260040161091091906116c0565b602060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610951919061179a565b90506000811180156109d85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168686848181106109aa576109a961198d565b5b90506020020160208101906109bf91906116db565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610a3757503073ffffffffffffffffffffffffffffffffffffffff16868684818110610a0957610a0861198d565b5b9050602002016020810190610a1e91906116db565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610af35760008373ffffffffffffffffffffffffffffffffffffffff166323b872dd888886818110610a6d57610a6c61198d565b5b9050602002016020810190610a8291906116db565b87856040518463ffffffff1660e01b8152600401610aa293929190611839565b6020604051808303816000875af1158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae5919061189c565b905080610af157600080fd5b505b5080806001019150506108a3565b505050505050565b610b19610b1461115c565b611164565b610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f90611765565b60405180910390fd5b6000839050828173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b9791906116c0565b602060405180830381865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd8919061179a565b1015610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090611d2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401610c549291906118c9565b6020604051808303816000875af1158015610c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c97919061189c565b5050505050565b610ca66112b5565b610cb0600061133c565b565b600660149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cfe610cf961115c565b611164565b610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490611d97565b60405180910390fd5b60008390508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610dbf9291906118c9565b6020604051808303816000875af1158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e02919061189c565b610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e389061193e565b60405180910390fd5b828173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e7b91906116c0565b602060405180830381865afa158015610e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebc919061179a565b1015610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef490611d2b565b60405180910390fd5b6000600267ffffffffffffffff811115610f1a57610f1961195e565b5b604051908082528060200260200182016040528015610f485781602001602082028036833780820191505090505b5090508481600081518110610f6057610f5f61198d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610fd157610fd061198d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe585600084876103844261105c91906119bc565b6040518663ffffffff1660e01b815260040161107c959493929190611af3565b6000604051808303816000875af115801561109b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110c49190611c6d565b506110cf60006111fb565b5050505050565b6110de6112b5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111505760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161114791906116c0565b60405180910390fd5b6111598161133c565b50565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806111f457506111c5610cc5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663ae7aeeaf600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161127f929190611cb6565b600060405180830381600087803b15801561129957600080fd5b505af11580156112ad573d6000803e3d6000fd5b505050505050565b6112bd61115c565b73ffffffffffffffffffffffffffffffffffffffff166112db610cc5565b73ffffffffffffffffffffffffffffffffffffffff161461133a576112fe61115c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161133191906116c0565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061143f82611414565b9050919050565b61144f81611434565b811461145a57600080fd5b50565b60008135905061146c81611446565b92915050565b600080604083850312156114895761148861140a565b5b60006114978582860161145d565b92505060206114a88582860161145d565b9150509250929050565b600080600080608085870312156114cc576114cb61140a565b5b60006114da8782880161145d565b94505060206114eb8782880161145d565b93505060406114fc8782880161145d565b925050606061150d8782880161145d565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f84011261153e5761153d611519565b5b8235905067ffffffffffffffff81111561155b5761155a61151e565b5b60208301915083602082028301111561157757611576611523565b5b9250929050565b600080600080606085870312156115985761159761140a565b5b60006115a68782880161145d565b945050602085013567ffffffffffffffff8111156115c7576115c661140f565b5b6115d387828801611528565b935093505060406115e68782880161145d565b91505092959194509250565b6000819050919050565b611605816115f2565b811461161057600080fd5b50565b600081359050611622816115fc565b92915050565b6000806000606084860312156116415761164061140a565b5b600061164f8682870161145d565b935050602061166086828701611613565b92505060406116718682870161145d565b9150509250925092565b60008115159050919050565b6116908161167b565b82525050565b60006020820190506116ab6000830184611687565b92915050565b6116ba81611434565b82525050565b60006020820190506116d560008301846116b1565b92915050565b6000602082840312156116f1576116f061140a565b5b60006116ff8482850161145d565b91505092915050565b600082825260208201905092915050565b7f6e6f000000000000000000000000000000000000000000000000000000000000600082015250565b600061174f600283611708565b915061175a82611719565b602082019050919050565b6000602082019050818103600083015261177e81611742565b9050919050565b600081519050611794816115fc565b92915050565b6000602082840312156117b0576117af61140a565b5b60006117be84828501611785565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611801826115f2565b915061180c836115f2565b9250828203905081811115611824576118236117c7565b5b92915050565b611833816115f2565b82525050565b600060608201905061184e60008301866116b1565b61185b60208301856116b1565b611868604083018461182a565b949350505050565b6118798161167b565b811461188457600080fd5b50565b60008151905061189681611870565b92915050565b6000602082840312156118b2576118b161140a565b5b60006118c084828501611887565b91505092915050565b60006040820190506118de60008301856116b1565b6118eb602083018461182a565b9392505050565b7f617070726f7665206661696c6564000000000000000000000000000000000000600082015250565b6000611928600e83611708565b9150611933826118f2565b602082019050919050565b600060208201905081810360008301526119578161191b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006119c7826115f2565b91506119d2836115f2565b92508282019050808211156119ea576119e96117c7565b5b92915050565b6000819050919050565b6000819050919050565b6000611a1f611a1a611a15846119f0565b6119fa565b6115f2565b9050919050565b611a2f81611a04565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611a6a81611434565b82525050565b6000611a7c8383611a61565b60208301905092915050565b6000602082019050919050565b6000611aa082611a35565b611aaa8185611a40565b9350611ab583611a51565b8060005b83811015611ae6578151611acd8882611a70565b9750611ad883611a88565b925050600181019050611ab9565b5085935050505092915050565b600060a082019050611b08600083018861182a565b611b156020830187611a26565b8181036040830152611b278186611a95565b9050611b3660608301856116b1565b611b43608083018461182a565b9695505050505050565b6000601f19601f8301169050919050565b611b6782611b4d565b810181811067ffffffffffffffff82111715611b8657611b8561195e565b5b80604052505050565b6000611b99611400565b9050611ba58282611b5e565b919050565b600067ffffffffffffffff821115611bc557611bc461195e565b5b602082029050602081019050919050565b6000611be9611be484611baa565b611b8f565b90508083825260208201905060208402830185811115611c0c57611c0b611523565b5b835b81811015611c355780611c218882611785565b845260208401935050602081019050611c0e565b5050509392505050565b600082601f830112611c5457611c53611519565b5b8151611c64848260208601611bd6565b91505092915050565b600060208284031215611c8357611c8261140a565b5b600082015167ffffffffffffffff811115611ca157611ca061140f565b5b611cad84828501611c3f565b91505092915050565b6000604082019050611ccb60008301856116b1565b611cd86020830184611687565b9392505050565b7f6e6f20746f6b656e000000000000000000000000000000000000000000000000600082015250565b6000611d15600883611708565b9150611d2082611cdf565b602082019050919050565b60006020820190508181036000830152611d4481611d08565b9050919050565b7f6e6f207761790000000000000000000000000000000000000000000000000000600082015250565b6000611d81600683611708565b9150611d8c82611d4b565b602082019050919050565b60006020820190508181036000830152611db081611d74565b905091905056fea2646970667358221220b0f8a4f6072002a77beb6bdf4d485bc9442f055556bf9b088fe21de10543221464736f6c63430008180033