60c060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff021916908315150217905550348015620000b757600080fd5b506040518060400160405280600881526020017f48454c4c464952450000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4946524954000000000000000000000000000000000000000000000000000000815250816003908162000135919062000c30565b50806004908162000147919062000c30565b5050506200016a6200015e6200050560201b60201c565b6200050d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000196816001620005d360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c919062000d81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016200029a92919062000dc4565b6020604051808303816000875af1158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000d81565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200032860a0516001620005d360201b60201c565b600060019050600080600190506000806c0c9f2c9cd04674edea400000009050606460028262000359919062000e20565b62000365919062000eb0565b60088190555060646002826200037c919062000e20565b62000388919062000eb0565b600a81905550612710600582620003a0919062000e20565b620003ac919062000eb0565b60098190555082600d8190555081600e81905550600e54600d54620003d2919062000ee8565b600c819055508460108190555083601181905550601154601054620003f8919062000ee8565b600f8190555073cfa57923e9ba9af04a33342d88c4581cf8d3f697600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047562000467620006bd60201b60201c565b6001620006e760201b60201c565b62000488306001620006e760201b60201c565b6200049d61dead6001620006e760201b60201c565b620004bf620004b1620006bd60201b60201c565b6001620005d360201b60201c565b620004d2306001620005d360201b60201c565b620004e761dead6001620005d360201b60201c565b620004f933826200082160201b60201c565b505050505050620010a2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005e36200050560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000609620006bd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000662576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006599062000fa6565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006f76200050560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200071d620006bd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000776576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076d9062000fa6565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000815919062000fe5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000893576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088a9062001052565b60405180910390fd5b620008ba735397ce66712f36f4cb296795e11ee95ef681ffe98383620009ac60201b60201c565b8060026000828254620008ce919062000ee8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000925919062000ee8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200098c919062001085565b60405180910390a3620009a860008383620009b160201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a3857607f821691505b60208210810362000a4e5762000a4d620009f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ab87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a79565b62000ac4868362000a79565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b1162000b0b62000b058462000adc565b62000ae6565b62000adc565b9050919050565b6000819050919050565b62000b2d8362000af0565b62000b4562000b3c8262000b18565b84845462000a86565b825550505050565b600090565b62000b5c62000b4d565b62000b6981848462000b22565b505050565b5b8181101562000b915762000b8560008262000b52565b60018101905062000b6f565b5050565b601f82111562000be05762000baa8162000a54565b62000bb58462000a69565b8101602085101562000bc5578190505b62000bdd62000bd48562000a69565b83018262000b6e565b50505b505050565b600082821c905092915050565b600062000c056000198460080262000be5565b1980831691505092915050565b600062000c20838362000bf2565b9150826002028217905092915050565b62000c3b82620009b6565b67ffffffffffffffff81111562000c575762000c56620009c1565b5b62000c63825462000a1f565b62000c7082828562000b95565b600060209050601f83116001811462000ca8576000841562000c93578287015190505b62000c9f858262000c12565b86555062000d0f565b601f19841662000cb88662000a54565b60005b8281101562000ce25784890151825560018201915060208501945060208101905062000cbb565b8683101562000d02578489015162000cfe601f89168262000bf2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d498262000d1c565b9050919050565b62000d5b8162000d3c565b811462000d6757600080fd5b50565b60008151905062000d7b8162000d50565b92915050565b60006020828403121562000d9a5762000d9962000d17565b5b600062000daa8482850162000d6a565b91505092915050565b62000dbe8162000d3c565b82525050565b600060408201905062000ddb600083018562000db3565b62000dea602083018462000db3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e2d8262000adc565b915062000e3a8362000adc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e765762000e7562000df1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ebd8262000adc565b915062000eca8362000adc565b92508262000edd5762000edc62000e81565b5b828204905092915050565b600062000ef58262000adc565b915062000f028362000adc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f3a5762000f3962000df1565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f8e60208362000f45565b915062000f9b8262000f56565b602082019050919050565b6000602082019050818103600083015262000fc18162000f7f565b9050919050565b60008115159050919050565b62000fdf8162000fc8565b82525050565b600060208201905062000ffc600083018462000fd4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200103a601f8362000f45565b9150620010478262001002565b602082019050919050565b600060208201905081810360008301526200106d816200102b565b9050919050565b6200107f8162000adc565b82525050565b60006020820190506200109c600083018462001074565b92915050565b60805160a051613b60620010f960003960008181610ebb01528181611ee20152818161212b015281816123360152818161240101526124eb015260008181610a9701528181612a160152612a3d0152613b606000f3fe6080604052600436106102555760003560e01c80638a8c523c11610139578063c0246668116100b6578063dd62ed3e1161007a578063dd62ed3e146108b3578063e2f45605146108f0578063f11a24d31461091b578063f2fde38b14610946578063f63743421461096f578063f8b45b051461099a5761025c565b8063c0246668146107ce578063c18bc195146107f7578063c8c8ebe414610820578063d257b34f1461084b578063d85ba063146108885761025c565b80639c3b4fdc116100fd5780639c3b4fdc146106e5578063a0d82dc514610710578063a9059cbb1461073b578063ad5c464814610778578063bbc0c742146107a35761025c565b80638a8c523c146106245780638da5cb5b1461063b5780638ea5220f14610666578063924de9b71461069157806395d89b41146106ba5761025c565b80633ba48495116101d25780636a486a8e116101965780636a486a8e146105265780636ddd17131461055157806370a082311461057c578063715018a6146105b9578063751039fc146105d05780637571336a146105fb5761025c565b80633ba484951461044157806349bd5a5e1461046a5780634a62bb65146104955780634fbee193146104c057806366ca9b83146104fd5761025c565b80631816467f116102195780631816467f1461035c578063203e727e1461038557806323b872dd146103ae57806327c8f835146103eb578063313ce567146104165761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109c5565b6040516102839190612b8e565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612c49565b610a57565b6040516102c09190612ca4565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb9190612cbf565b610a75565b6040516102fd9190612ca4565b60405180910390f35b34801561031257600080fd5b5061031b610a95565b6040516103289190612d4b565b60405180910390f35b34801561033d57600080fd5b50610346610ab9565b6040516103539190612d75565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e9190612cbf565b610ac3565b005b34801561039157600080fd5b506103ac60048036038101906103a79190612d90565b610bff565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612dbd565b610d0e565b6040516103e29190612ca4565b60405180910390f35b3480156103f757600080fd5b50610400610e06565b60405161040d9190612e1f565b60405180910390f35b34801561042257600080fd5b5061042b610e0c565b6040516104389190612e56565b60405180910390f35b34801561044d57600080fd5b5061046860048036038101906104639190612e71565b610e15565b005b34801561047657600080fd5b5061047f610eb9565b60405161048c9190612e1f565b60405180910390f35b3480156104a157600080fd5b506104aa610edd565b6040516104b79190612ca4565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190612cbf565b610ef0565b6040516104f49190612ca4565b60405180910390f35b34801561050957600080fd5b50610524600480360381019061051f9190612e71565b610f46565b005b34801561053257600080fd5b5061053b610fea565b6040516105489190612d75565b60405180910390f35b34801561055d57600080fd5b50610566610ff0565b6040516105739190612ca4565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190612cbf565b611003565b6040516105b09190612d75565b60405180910390f35b3480156105c557600080fd5b506105ce61104b565b005b3480156105dc57600080fd5b506105e56110d3565b6040516105f29190612ca4565b60405180910390f35b34801561060757600080fd5b50610622600480360381019061061d9190612edd565b611173565b005b34801561063057600080fd5b5061063961124a565b005b34801561064757600080fd5b506106506112fe565b60405161065d9190612e1f565b60405180910390f35b34801561067257600080fd5b5061067b611328565b6040516106889190612e1f565b60405180910390f35b34801561069d57600080fd5b506106b860048036038101906106b39190612f1d565b61134e565b005b3480156106c657600080fd5b506106cf6113e7565b6040516106dc9190612b8e565b60405180910390f35b3480156106f157600080fd5b506106fa611479565b6040516107079190612d75565b60405180910390f35b34801561071c57600080fd5b5061072561147f565b6040516107329190612d75565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190612c49565b611485565b60405161076f9190612ca4565b60405180910390f35b34801561078457600080fd5b5061078d6114a3565b60405161079a9190612e1f565b60405180910390f35b3480156107af57600080fd5b506107b86114c9565b6040516107c59190612ca4565b60405180910390f35b3480156107da57600080fd5b506107f560048036038101906107f09190612edd565b6114dc565b005b34801561080357600080fd5b5061081e60048036038101906108199190612d90565b611601565b005b34801561082c57600080fd5b50610835611710565b6040516108429190612d75565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d9190612d90565b611716565b60405161087f9190612ca4565b60405180910390f35b34801561089457600080fd5b5061089d61186b565b6040516108aa9190612d75565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d59190612f4a565b611871565b6040516108e79190612d75565b60405180910390f35b3480156108fc57600080fd5b506109056118f8565b6040516109129190612d75565b60405180910390f35b34801561092757600080fd5b506109306118fe565b60405161093d9190612d75565b60405180910390f35b34801561095257600080fd5b5061096d60048036038101906109689190612cbf565b611904565b005b34801561097b57600080fd5b506109846119fb565b6040516109919190612d75565b60405180910390f35b3480156109a657600080fd5b506109af611a01565b6040516109bc9190612d75565b60405180910390f35b6060600380546109d490612fb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0090612fb9565b8015610a4d5780601f10610a2257610100808354040283529160200191610a4d565b820191906000526020600020905b815481529060010190602001808311610a3057829003601f168201915b5050505050905090565b6000610a6b610a64611a07565b8484611a0f565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610acb611a07565b73ffffffffffffffffffffffffffffffffffffffff16610ae96112fe565b73ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613036565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c07611a07565b73ffffffffffffffffffffffffffffffffffffffff16610c256112fe565b73ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290613036565b60405180910390fd5b670de0b6b3a76400006103e86001610c91610ab9565b610c9b9190613085565b610ca5919061310e565b610caf919061310e565b811015610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce8906131b1565b60405180910390fd5b670de0b6b3a764000081610d059190613085565b60088190555050565b6000610d1b848484611bd8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d66611a07565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613243565b60405180910390fd5b610dfa85610df2611a07565b858403611a0f565b60019150509392505050565b61dead81565b60006012905090565b610e1d611a07565b73ffffffffffffffffffffffffffffffffffffffff16610e3b6112fe565b73ffffffffffffffffffffffffffffffffffffffff1614610e91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8890613036565b60405180910390fd5b8160108190555080601181905550601154601054610eaf9190613263565b600f819055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f4e611a07565b73ffffffffffffffffffffffffffffffffffffffff16610f6c6112fe565b73ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613036565b60405180910390fd5b81600d8190555080600e81905550600e54600d54610fe09190613263565b600c819055505050565b600f5481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611053611a07565b73ffffffffffffffffffffffffffffffffffffffff166110716112fe565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90613036565b60405180910390fd5b6110d16000612537565b565b60006110dd611a07565b73ffffffffffffffffffffffffffffffffffffffff166110fb6112fe565b73ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890613036565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61117b611a07565b73ffffffffffffffffffffffffffffffffffffffff166111996112fe565b73ffffffffffffffffffffffffffffffffffffffff16146111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690613036565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611252611a07565b73ffffffffffffffffffffffffffffffffffffffff166112706112fe565b73ffffffffffffffffffffffffffffffffffffffff16146112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd90613036565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611356611a07565b73ffffffffffffffffffffffffffffffffffffffff166113746112fe565b73ffffffffffffffffffffffffffffffffffffffff16146113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613036565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113f690612fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461142290612fb9565b801561146f5780601f106114445761010080835404028352916020019161146f565b820191906000526020600020905b81548152906001019060200180831161145257829003601f168201915b5050505050905090565b600d5481565b60105481565b6000611499611492611a07565b8484611bd8565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60019054906101000a900460ff1681565b6114e4611a07565b73ffffffffffffffffffffffffffffffffffffffff166115026112fe565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613036565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115f59190612ca4565b60405180910390a25050565b611609611a07565b73ffffffffffffffffffffffffffffffffffffffff166116276112fe565b73ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490613036565b60405180910390fd5b670de0b6b3a76400006103e86005611693610ab9565b61169d9190613085565b6116a7919061310e565b6116b1919061310e565b8110156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea9061332b565b60405180910390fd5b670de0b6b3a7640000816117079190613085565b600a8190555050565b60085481565b6000611720611a07565b73ffffffffffffffffffffffffffffffffffffffff1661173e6112fe565b73ffffffffffffffffffffffffffffffffffffffff1614611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90613036565b60405180910390fd5b620186a060016117a2610ab9565b6117ac9190613085565b6117b6919061310e565b8210156117f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef906133bd565b60405180910390fd5b6103e86005611805610ab9565b61180f9190613085565b611819919061310e565b82111561185b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118529061344f565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600e5481565b61190c611a07565b73ffffffffffffffffffffffffffffffffffffffff1661192a6112fe565b73ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790613036565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e6906134e1565b60405180910390fd5b6119f881612537565b50565b60115481565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590613573565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613605565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bcb9190612d75565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e90613697565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90613729565b60405180910390fd5b60008103611ccf57611cca838360006125fd565b612532565b600b60009054906101000a900460ff16156120d957611cec6112fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d5a5750611d2a6112fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d935750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611dcd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611de65750600660149054906101000a900460ff16155b156120d857600b60019054906101000a900460ff16611ee057601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ea05750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613795565b60405180910390fd5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f855750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561202c57600854811115611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc690613827565b60405180910390fd5b600a54611fdb83611003565b82611fe69190613263565b1115612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90613893565b60405180910390fd5b6120d7565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120d657600a5461208983611003565b826120949190613263565b11156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613893565b60405180910390fd5b5b5b5b5b60006120e430611003565b9050600060095482101590508080156121095750600b60029054906101000a900460ff165b80156121225750600660149054906101000a900460ff16155b801561217957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156121cf5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122255750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612269576001600660146101000a81548160ff02191690831515021790555061224d61287c565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061231f5750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561232957600090505b60008060008315612520577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614801561239157506000600f54115b156123ff576123be60646123b0600f548a6128cc90919063ffffffff16565b6128e290919063ffffffff16565b9250600f54601154846123d19190613085565b6123db919061310e565b9150600f54601054846123ee9190613085565b6123f8919061310e565b90506124c7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614801561245c57506000600c54115b156124c657612489606461247b600c548a6128cc90919063ffffffff16565b6128e290919063ffffffff16565b9250600c54600e548461249c9190613085565b6124a6919061310e565b9150600c54600d54846124b99190613085565b6124c3919061310e565b90505b5b60008311156124dc576124db8930856125fd565b5b600082111561251157612510307f0000000000000000000000000000000000000000000000000000000000000000846125fd565b5b828761251d91906138b3565b96505b61252b8989896125fd565b5050505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390613697565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d290613729565b60405180910390fd5b6126e68383836128f8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561276c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276390613959565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127ff9190613263565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128639190612d75565b60405180910390a36128768484846128fd565b50505050565b600061288730611003565b90506000810361289757506128ca565b60146009546128a69190613085565b8111156128bf5760146009546128bc9190613085565b90505b6128c881612902565b505b565b600081836128da9190613085565b905092915050565b600081836128f0919061310e565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561291f5761291e613979565b5b60405190808252806020026020018201604052801561294d5781602001602082028036833780820191505090505b5090503081600081518110612965576129646139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129d6576129d56139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a3b307f000000000000000000000000000000000000000000000000000000000000000084611a0f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612abf959493929190613ad0565b600060405180830381600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b2f578082015181840152602081019050612b14565b83811115612b3e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b6082612af5565b612b6a8185612b00565b9350612b7a818560208601612b11565b612b8381612b44565b840191505092915050565b60006020820190508181036000830152612ba88184612b55565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612be082612bb5565b9050919050565b612bf081612bd5565b8114612bfb57600080fd5b50565b600081359050612c0d81612be7565b92915050565b6000819050919050565b612c2681612c13565b8114612c3157600080fd5b50565b600081359050612c4381612c1d565b92915050565b60008060408385031215612c6057612c5f612bb0565b5b6000612c6e85828601612bfe565b9250506020612c7f85828601612c34565b9150509250929050565b60008115159050919050565b612c9e81612c89565b82525050565b6000602082019050612cb96000830184612c95565b92915050565b600060208284031215612cd557612cd4612bb0565b5b6000612ce384828501612bfe565b91505092915050565b6000819050919050565b6000612d11612d0c612d0784612bb5565b612cec565b612bb5565b9050919050565b6000612d2382612cf6565b9050919050565b6000612d3582612d18565b9050919050565b612d4581612d2a565b82525050565b6000602082019050612d606000830184612d3c565b92915050565b612d6f81612c13565b82525050565b6000602082019050612d8a6000830184612d66565b92915050565b600060208284031215612da657612da5612bb0565b5b6000612db484828501612c34565b91505092915050565b600080600060608486031215612dd657612dd5612bb0565b5b6000612de486828701612bfe565b9350506020612df586828701612bfe565b9250506040612e0686828701612c34565b9150509250925092565b612e1981612bd5565b82525050565b6000602082019050612e346000830184612e10565b92915050565b600060ff82169050919050565b612e5081612e3a565b82525050565b6000602082019050612e6b6000830184612e47565b92915050565b60008060408385031215612e8857612e87612bb0565b5b6000612e9685828601612c34565b9250506020612ea785828601612c34565b9150509250929050565b612eba81612c89565b8114612ec557600080fd5b50565b600081359050612ed781612eb1565b92915050565b60008060408385031215612ef457612ef3612bb0565b5b6000612f0285828601612bfe565b9250506020612f1385828601612ec8565b9150509250929050565b600060208284031215612f3357612f32612bb0565b5b6000612f4184828501612ec8565b91505092915050565b60008060408385031215612f6157612f60612bb0565b5b6000612f6f85828601612bfe565b9250506020612f8085828601612bfe565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fd157607f821691505b602082108103612fe457612fe3612f8a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613020602083612b00565b915061302b82612fea565b602082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309082612c13565b915061309b83612c13565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130d4576130d3613056565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061311982612c13565b915061312483612c13565b925082613134576131336130df565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061319b602f83612b00565b91506131a68261313f565b604082019050919050565b600060208201905081810360008301526131ca8161318e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061322d602883612b00565b9150613238826131d1565b604082019050919050565b6000602082019050818103600083015261325c81613220565b9050919050565b600061326e82612c13565b915061327983612c13565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132ae576132ad613056565b5b828201905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613315602483612b00565b9150613320826132b9565b604082019050919050565b6000602082019050818103600083015261334481613308565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006133a7603583612b00565b91506133b28261334b565b604082019050919050565b600060208201905081810360008301526133d68161339a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613439603483612b00565b9150613444826133dd565b604082019050919050565b600060208201905081810360008301526134688161342c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134cb602683612b00565b91506134d68261346f565b604082019050919050565b600060208201905081810360008301526134fa816134be565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061355d602483612b00565b915061356882613501565b604082019050919050565b6000602082019050818103600083015261358c81613550565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135ef602283612b00565b91506135fa82613593565b604082019050919050565b6000602082019050818103600083015261361e816135e2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613681602583612b00565b915061368c82613625565b604082019050919050565b600060208201905081810360008301526136b081613674565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613713602383612b00565b915061371e826136b7565b604082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061377f601683612b00565b915061378a82613749565b602082019050919050565b600060208201905081810360008301526137ae81613772565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613811603583612b00565b915061381c826137b5565b604082019050919050565b6000602082019050818103600083015261384081613804565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061387d601383612b00565b915061388882613847565b602082019050919050565b600060208201905081810360008301526138ac81613870565b9050919050565b60006138be82612c13565b91506138c983612c13565b9250828210156138dc576138db613056565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613943602683612b00565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006139fc6139f76139f2846139d7565b612cec565b612c13565b9050919050565b613a0c816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a4781612bd5565b82525050565b6000613a598383613a3e565b60208301905092915050565b6000602082019050919050565b6000613a7d82613a12565b613a878185613a1d565b9350613a9283613a2e565b8060005b83811015613ac3578151613aaa8882613a4d565b9750613ab583613a65565b925050600181019050613a96565b5085935050505092915050565b600060a082019050613ae56000830188612d66565b613af26020830187613a03565b8181036040830152613b048186613a72565b9050613b136060830185612e10565b613b206080830184612d66565b969550505050505056fea2646970667358221220bbe2d79d60e9427ff151efd601311560cd75946570cfacf64eca21991dbb441364736f6c634300080f0033