60806040523480156200001157600080fd5b5060405162001cff38038062001cff833981810160405281019062000037919062000386565b6000620000496200022e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508360049080519060200190620000ff92919062000236565b5082600590805190602001906200011892919062000236565b5081600660006101000a81548160ff021916908360ff16021790555081600a62000143919062000514565b8162000150919062000651565b600781905550600754600160006200016d6200022e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001bb6200022e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200021c919062000435565b60405180910390a35050505062000803565b600033905090565b8280546200024490620006ff565b90600052602060002090601f016020900481019282620002685760008555620002b4565b82601f106200028357805160ff1916838001178555620002b4565b82800160010185558215620002b4579182015b82811115620002b357825182559160200191906001019062000296565b5b509050620002c39190620002c7565b5090565b5b80821115620002e2576000816000905550600101620002c8565b5090565b6000620002fd620002f78462000486565b62000452565b9050828152602081018484840111156200031657600080fd5b62000323848285620006c9565b509392505050565b600082601f8301126200033d57600080fd5b81516200034f848260208601620002e6565b91505092915050565b6000815190506200036981620007cf565b92915050565b6000815190506200038081620007e9565b92915050565b600080600080608085870312156200039d57600080fd5b600085015167ffffffffffffffff811115620003b857600080fd5b620003c6878288016200032b565b945050602085015167ffffffffffffffff811115620003e457600080fd5b620003f2878288016200032b565b935050604062000405878288016200036f565b9250506060620004188782880162000358565b91505092959194509250565b6200042f81620006b2565b82525050565b60006020820190506200044c600083018462000424565b92915050565b6000604051905081810181811067ffffffffffffffff821117156200047c576200047b62000793565b5b8060405250919050565b600067ffffffffffffffff821115620004a457620004a362000793565b5b601f19601f8301169050602081019050919050565b6000808291508390505b60018511156200050b57808604811115620004e357620004e262000735565b5b6001851615620004f35780820291505b80810290506200050385620007c2565b9450620004c3565b94509492505050565b60006200052182620006b2565b91506200052e83620006bc565b92506200055d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000565565b905092915050565b6000826200057757600190506200064a565b816200058757600090506200064a565b8160018114620005a05760028114620005ab57620005e1565b60019150506200064a565b60ff841115620005c057620005bf62000735565b5b8360020a915084821115620005da57620005d962000735565b5b506200064a565b5060208310610133831016604e8410600b84101617156200061b5782820a90508381111562000615576200061462000735565b5b6200064a565b6200062a8484846001620004b9565b9250905081840481111562000644576200064362000735565b5b81810290505b9392505050565b60006200065e82620006b2565b91506200066b83620006b2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006a757620006a662000735565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60005b83811015620006e9578082015181840152602081019050620006cc565b83811115620006f9576000848401525b50505050565b600060028204905060018216806200071857607f821691505b602082108114156200072f576200072e62000764565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008160011c9050919050565b620007da81620006b2565b8114620007e657600080fd5b50565b620007f481620006bc565b81146200080057600080fd5b50565b6114ec80620008136000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610264578063dd62ed3e14610294578063ef195401146102c4578063f468bd80146102e0576100f5565b806370a08231146101ee578063715018a61461021e5780638da5cb5b1461022857806395d89b4114610246576100f5565b80631936c2ac116100d35780631936c2ac1461016657806323b872dd14610182578063313ce567146101b2578063698224ae146101d0576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610310565b60405161010f9190611201565b60405180910390f35b610132600480360381019061012d9190610fe8565b6103a2565b60405161013f91906111e6565b60405180910390f35b6101506104a2565b60405161015d9190611283565b60405180910390f35b610180600480360381019061017b9190610f34565b6104ac565b005b61019c60048036038101906101979190610f99565b610538565b6040516101a991906111e6565b60405180910390f35b6101ba6108d4565b6040516101c7919061129e565b60405180910390f35b6101d86108eb565b6040516101e59190611283565b60405180910390f35b61020860048036038101906102039190610f34565b6108f3565b6040516102159190611283565b60405180910390f35b61022661093c565b005b610230610a42565b60405161023d91906111cb565b60405180910390f35b61024e610a6b565b60405161025b9190611201565b60405180910390f35b61027e60048036038101906102799190610fe8565b610afd565b60405161028b91906111e6565b60405180910390f35b6102ae60048036038101906102a99190610f5d565b610dd6565b6040516102bb9190611283565b60405180910390f35b6102de60048036038101906102d99190610f34565b610e5d565b005b6102fa60048036038101906102f59190610f34565b610eea565b6040516103079190611283565b60405180910390f35b60606004805461031f906113e7565b80601f016020809104026020016040519081016040528092919081815260200182805461034b906113e7565b80156103985780601f1061036d57610100808354040283529160200191610398565b820191906000526020600020905b81548152906001019060200180831161037b57829003601f168201915b5050505050905090565b600081600260006103b1610f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1661044b610f02565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104909190611283565b60405180910390a36001905092915050565b6000600754905090565b6104b4610f02565b73ffffffffffffffffffffffffffffffffffffffff166104d2610a42565b73ffffffffffffffffffffffffffffffffffffffff16146104f257600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905550565b6000836000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461065757630d19e800600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426105d2919061132b565b11610612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060990611263565b60405180910390fd5b42600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106a1610f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490611243565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461076c919061132b565b9250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107c291906112d5565b9250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610813610f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461085c919061132b565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516108c09190611283565b60405180910390a360019150509392505050565b6000600660009054906101000a900460ff16905090565b630d19e80081565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610944610f02565b73ffffffffffffffffffffffffffffffffffffffff16610962610a42565b73ffffffffffffffffffffffffffffffffffffffff161461098257600080fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610a7a906113e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa6906113e7565b8015610af35780601f10610ac857610100808354040283529160200191610af3565b820191906000526020600020905b815481529060010190602001808311610ad657829003601f168201915b5050505050905090565b6000610b07610f02565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c2357630d19e800600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610b9e919061132b565b11610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590611263565b60405180910390fd5b42600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8260016000610c30610f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca390611223565b60405180910390fd5b8260016000610cb9610f02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d02919061132b565b9250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d5891906112d5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16610d7e610f02565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610dc39190611283565b60405180910390a3600191505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e65610f02565b73ffffffffffffffffffffffffffffffffffffffff16610e83610a42565b73ffffffffffffffffffffffffffffffffffffffff1614610ea357600080fd5b42600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60036020528060005260406000206000915090505481565b600033905090565b600081359050610f1981611488565b92915050565b600081359050610f2e8161149f565b92915050565b600060208284031215610f4657600080fd5b6000610f5484828501610f0a565b91505092915050565b60008060408385031215610f7057600080fd5b6000610f7e85828601610f0a565b9250506020610f8f85828601610f0a565b9150509250929050565b600080600060608486031215610fae57600080fd5b6000610fbc86828701610f0a565b9350506020610fcd86828701610f0a565b9250506040610fde86828701610f1f565b9150509250925092565b60008060408385031215610ffb57600080fd5b600061100985828601610f0a565b925050602061101a85828601610f1f565b9150509250929050565b61102d8161135f565b82525050565b61103c81611371565b82525050565b600061104d826112b9565b61105781856112c4565b93506110678185602086016113b4565b61107081611477565b840191505092915050565b60006110886023836112c4565b91507f54543a207472616e7366657220616d6f756e7420657863656564732062616c6160008301527f6e636500000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110ee6025836112c4565b91507f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f60008301527f77616e63650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111546026836112c4565b91507f4c696d69727472653a2043616e206f6e6c79207472616e73666572206f6e636560008301527f20612064617900000000000000000000000000000000000000000000000000006020830152604082019050919050565b6111b68161139d565b82525050565b6111c5816113a7565b82525050565b60006020820190506111e06000830184611024565b92915050565b60006020820190506111fb6000830184611033565b92915050565b6000602082019050818103600083015261121b8184611042565b905092915050565b6000602082019050818103600083015261123c8161107b565b9050919050565b6000602082019050818103600083015261125c816110e1565b9050919050565b6000602082019050818103600083015261127c81611147565b9050919050565b600060208201905061129860008301846111ad565b92915050565b60006020820190506112b360008301846111bc565b92915050565b600081519050919050565b600082825260208201905092915050565b60006112e08261139d565b91506112eb8361139d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113205761131f611419565b5b828201905092915050565b60006113368261139d565b91506113418361139d565b92508282101561135457611353611419565b5b828203905092915050565b600061136a8261137d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156113d25780820151818401526020810190506113b7565b838111156113e1576000848401525b50505050565b600060028204905060018216806113ff57607f821691505b6020821081141561141357611412611448565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6114918161135f565b811461149c57600080fd5b50565b6114a88161139d565b81146114b357600080fd5b5056fea2646970667358221220fec178bf99a690cda2c552162dce95b7c2587dd5153f063fda6c31138fae9bfd64736f6c63430008000033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000aba95000000000000000000000000000000000000000000000000000000000000000000d476f64204f66205765616c7468000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003474f570000000000000000000000000000000000000000000000000000000000