60806040526040518060400160405280600a81526020017f436f636f20546f6b656e000000000000000000000000000000000000000000008152505f90816100479190610340565b506040518060400160405280600281526020017f414e0000000000000000000000000000000000000000000000000000000000008152506001908161008c9190610340565b505f60025f6101000a81548160ff021916908360ff1602179055506305f5e1006003556003546004553480156100c0575f80fd5b503360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061040f565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061018157607f821691505b6020821081036101945761019361013d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101bb565b61020086836101bb565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61024461023f61023a84610218565b610221565b610218565b9050919050565b5f819050919050565b61025d8361022a565b6102716102698261024b565b8484546101c7565b825550505050565b5f90565b610285610279565b610290818484610254565b505050565b5b818110156102b3576102a85f8261027d565b600181019050610296565b5050565b601f8211156102f8576102c98161019a565b6102d2846101ac565b810160208510156102e1578190505b6102f56102ed856101ac565b830182610295565b50505b505050565b5f82821c905092915050565b5f6103185f19846008026102fd565b1980831691505092915050565b5f6103308383610309565b9150826002028217905092915050565b61034982610106565b67ffffffffffffffff81111561036257610361610110565b5b61036c825461016a565b6103778282856102b7565b5f60209050601f8311600181146103a8575f8415610396578287015190505b6103a08582610325565b865550610407565b601f1984166103b68661019a565b5f5b828110156103dd578489015182556001820191506020850194506020810190506103b8565b868310156103fa57848901516103f6601f891682610309565b8355505b6001600288020188555050505b505050505050565b6115be8061041c5f395ff3fe6080604052600436106100f6575f3560e01c806370a0823111610089578063bbd316eb11610058578063bbd316eb14610453578063da0239a61461047d578063dd62ed3e146104a7578063f3b76aa1146104e3576101ff565b806370a08231146103875780638da5cb5b146103c357806395d89b41146103ed578063a9059cbb14610417576101ff565b806323b872dd116100c557806323b872dd146102a957806327e235e3146102e5578063313ce5671461032157806342966c681461034b576101ff565b8063064e86841461020357806306fdde0314610219578063095ea7b31461024357806318160ddd1461027f576101ff565b366101ff57600a6004541015801561014a57505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b801561015c5750662386f26fc1000034145b156101c257600a60045f8282546101739190610faf565b92505081905550600a60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506101fd565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f4906110d4565b60405180910390fd5b005b5f80fd5b34801561020e575f80fd5b5061021761051f565b005b348015610224575f80fd5b5061022d61062c565b60405161023a9190611152565b60405180910390f35b34801561024e575f80fd5b50610269600480360381019061026491906111fa565b6106b7565b6040516102769190611252565b60405180910390f35b34801561028a575f80fd5b506102936107a4565b6040516102a0919061127a565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca9190611293565b6107aa565b6040516102dc9190611252565b60405180910390f35b3480156102f0575f80fd5b5061030b600480360381019061030691906112e3565b610a93565b604051610318919061127a565b60405180910390f35b34801561032c575f80fd5b50610335610aa8565b6040516103429190611329565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190611342565b610aba565b60405161037e9190611252565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a891906112e3565b610bfd565b6040516103ba919061127a565b60405180910390f35b3480156103ce575f80fd5b506103d7610c43565b6040516103e4919061138d565b60405180910390f35b3480156103f8575f80fd5b50610401610c68565b60405161040e9190611152565b60405180910390f35b348015610422575f80fd5b5061043d600480360381019061043891906111fa565b610cf4565b60405161044a9190611252565b60405180910390f35b34801561045e575f80fd5b50610467610eca565b604051610474919061127a565b60405180910390f35b348015610488575f80fd5b50610491610ed1565b60405161049e919061127a565b60405180910390f35b3480156104b2575f80fd5b506104cd60048036038101906104c891906113a6565b610ed7565b6040516104da919061127a565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906113a6565b610ef7565b604051610516919061127a565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a59061142e565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff163190811502906040515f60405180830381858888f19350505050158015610629573d5f803e3d5ffd5b50565b5f805461063890611479565b80601f016020809104026020016040519081016040528092919081815260200182805461066490611479565b80156106af5780601f10610686576101008083540402835291602001916106af565b820191905f5260205f20905b81548152906001019060200180831161069257829003601f168201915b505050505081565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610792919061127a565b60405180910390a36001905092915050565b60035481565b5f80821180156107f757508160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b801561087b57508160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b801561090b575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461090991906114a9565b115b15610a88578160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461095c9190610faf565b925050819055508160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109ea9190610faf565b925050819055508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a3d91906114a9565b925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848484604051610a77939291906114eb565b60405180910390a160019050610a8c565b5f90505b9392505050565b6006602052805f5260405f205f915090505481565b60025f9054906101000a900460ff1681565b5f8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b329061156a565b60405180910390fd5b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b879190610faf565b925050819055508160035f828254610b9f9190610faf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca583604051610bec919061127a565b60405180910390a260019050919050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054610c7590611479565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca190611479565b8015610cec5780601f10610cc357610100808354040283529160200191610cec565b820191905f5260205f20905b815481529060010190602001808311610ccf57829003601f168201915b505050505081565b5f8082118015610d4157508160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b8015610dd1575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dcf91906114a9565b115b15610ec0578160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e229190610faf565b925050819055508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e7591906114a9565b925050819055507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef338484604051610eaf939291906114eb565b60405180910390a160019050610ec4565b5f90505b92915050565b5f47905090565b60045481565b6007602052815f5260405f20602052805f5260405f205f91509150505481565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610fb982610f79565b9150610fc483610f79565b9250828203905081811115610fdc57610fdb610f82565b5b92915050565b5f82825260208201905092915050565b7f496e76616c6964207472616e73616374696f6e2e20506c6561736520656e73755f8201527f72652072656d61696e696e6720737570706c792069732073756666696369656e60208201527f7420616e6420796f7520646f206e6f7420616c7265616479206f776e20414e2060408201527f746f6b656e732c20616e642073656e642065786163746c7920302e303031206560608201527f746865722e000000000000000000000000000000000000000000000000000000608082015250565b5f6110be608583610fe2565b91506110c982610ff2565b60a082019050919050565b5f6020820190508181035f8301526110eb816110b2565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611124826110f2565b61112e8185610fe2565b935061113e8185602086016110fc565b6111478161110a565b840191505092915050565b5f6020820190508181035f83015261116a818461111a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61119f82611176565b9050919050565b6111af81611195565b81146111b9575f80fd5b50565b5f813590506111ca816111a6565b92915050565b6111d981610f79565b81146111e3575f80fd5b50565b5f813590506111f4816111d0565b92915050565b5f80604083850312156112105761120f611172565b5b5f61121d858286016111bc565b925050602061122e858286016111e6565b9150509250929050565b5f8115159050919050565b61124c81611238565b82525050565b5f6020820190506112655f830184611243565b92915050565b61127481610f79565b82525050565b5f60208201905061128d5f83018461126b565b92915050565b5f805f606084860312156112aa576112a9611172565b5b5f6112b7868287016111bc565b93505060206112c8868287016111bc565b92505060406112d9868287016111e6565b9150509250925092565b5f602082840312156112f8576112f7611172565b5b5f611305848285016111bc565b91505092915050565b5f60ff82169050919050565b6113238161130e565b82525050565b5f60208201905061133c5f83018461131a565b92915050565b5f6020828403121561135757611356611172565b5b5f611364848285016111e6565b91505092915050565b5f61137782611176565b9050919050565b6113878161136d565b82525050565b5f6020820190506113a05f83018461137e565b92915050565b5f80604083850312156113bc576113bb611172565b5b5f6113c9858286016111bc565b92505060206113da858286016111bc565b9150509250929050565b7f4f6e6c79204f776e6572000000000000000000000000000000000000000000005f82015250565b5f611418600a83610fe2565b9150611423826113e4565b602082019050919050565b5f6020820190508181035f8301526114458161140c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061149057607f821691505b6020821081036114a3576114a261144c565b5b50919050565b5f6114b382610f79565b91506114be83610f79565b92508282019050808211156114d6576114d5610f82565b5b92915050565b6114e581611195565b82525050565b5f6060820190506114fe5f8301866114dc565b61150b60208301856114dc565b611518604083018461126b565b949350505050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f611554601483610fe2565b915061155f82611520565b602082019050919050565b5f6020820190508181035f83015261158181611548565b905091905056fea2646970667358221220fab5481bae7240debe99fc25282fa03f8f82ff85ec067172c77deae6e194562a64736f6c63430008190033