0x60806040526008805460a060020a60ff02191690553480156200002157600080fd5b5060408051808201909152600f8082527f5477697374636f646520546f6b656e00000000000000000000000000000000006020909201918252620000689160049162000131565b506005805460ff191660121790556040805180820190915260048082527f54434454000000000000000000000000000000000000000000000000000000006020909201918252620000bc9160069162000131565b5060055460ff16600a0a6359682f000260078190556000805433600160a060020a03199091168117825580825260016020908152604080842085905580519485525191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3620001d6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017457805160ff1916838001178555620001a4565b82800160010185558215620001a4579182015b82811115620001a457825182559160200191906001019062000187565b50620001b2929150620001b6565b5090565b620001d391905b80821115620001b25760008155600101620001bd565b90565b611da780620001e66000396000f3fe6080604052600436106101695763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461016e578063095ea7b3146101f8578063158a49881461024557806318160ddd146102805780632121dc75146102a757806323b872dd146102bc578063313ce567146102ff57806337fb7e211461032a5780635b1ea8581461035b57806366188463146103a55780636f3a7767146103de57806370a08231146105565780637532eaac146105895780637c0fbc3114610673578063879f30ad1461075d5780638da5cb5b1461078757806390193b7c1461079c57806395d89b41146107cf57806396cfd124146107e4578063a9059cbb14610833578063af35c6c71461086c578063b89fc89e14610881578063c1181748146108b4578063d4acaf6c1461097c578063d73dd62314610a36578063dd62ed3e14610a6f578063e2cc7a5114610aaa578063f2fde38b14610abf575b600080fd5b34801561017a57600080fd5b50610183610af2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101bd5781810151838201526020016101a5565b50505050905090810190601f1680156101ea5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561020457600080fd5b506102316004803603604081101561021b57600080fd5b50600160a060020a038135169060200135610b80565b604080519115158252519081900360200190f35b34801561025157600080fd5b5061027e6004803603604081101561026857600080fd5b50600160a060020a038135169060200135610c23565b005b34801561028c57600080fd5b50610295610c60565b60408051918252519081900360200190f35b3480156102b357600080fd5b50610231610c66565b3480156102c857600080fd5b50610231600480360360608110156102df57600080fd5b50600160a060020a03813581169160208101359091169060400135610c76565b34801561030b57600080fd5b50610314610ca4565b6040805160ff9092168252519081900360200190f35b34801561033657600080fd5b5061033f610cad565b60408051600160a060020a039092168252519081900360200190f35b34801561036757600080fd5b50610370610cbc565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156103b157600080fd5b50610231600480360360408110156103c857600080fd5b50600160a060020a038135169060200135610ce0565b3480156103ea57600080fd5b50610231600480360361010081101561040257600080fd5b600160a060020a0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295600160a060020a038535169590949093506040810192506020013590506401000000008111156104e157600080fd5b8201836020820111156104f357600080fd5b8035906020019184600183028401116401000000008311171561051557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610dd0945050505050565b34801561056257600080fd5b506102956004803603602081101561057957600080fd5b5035600160a060020a0316610f39565b34801561059557600080fd5b50610231600480360360e08110156105ac57600080fd5b600160a060020a0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156105f357600080fd5b82018360208201111561060557600080fd5b8035906020019184600183028401116401000000008311171561062757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a03169150610f549050565b34801561067f57600080fd5b50610183600480360360e081101561069657600080fd5b600160a060020a0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156106dd57600080fd5b8201836020820111156106ef57600080fd5b8035906020019184600183028401116401000000008311171561071157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a03169150610f8c9050565b34801561076957600080fd5b5061027e6004803603602081101561078057600080fd5b50356112e9565b34801561079357600080fd5b5061033f6113a4565b3480156107a857600080fd5b50610295600480360360208110156107bf57600080fd5b5035600160a060020a03166113b3565b3480156107db57600080fd5b506101836113ce565b3480156107f057600080fd5b50610295600480360360a081101561080757600080fd5b50600160a060020a03813581169160208101359091169060408101359060608101359060800135611429565b34801561083f57600080fd5b506102316004803603604081101561085657600080fd5b50600160a060020a0381351690602001356114bd565b34801561087857600080fd5b5061027e6114e9565b34801561088d57600080fd5b5061027e600480360360208110156108a457600080fd5b5035600160a060020a0316611526565b3480156108c057600080fd5b50610231600480360360608110156108d757600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561090757600080fd5b82018360208201111561091957600080fd5b8035906020019184600183028401116401000000008311171561093b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061156c945050505050565b34801561098857600080fd5b5061033f6004803603604081101561099f57600080fd5b813591908101906040810160208201356401000000008111156109c157600080fd5b8201836020820111156109d357600080fd5b803590602001918460018302840111640100000000831117156109f557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506116b5945050505050565b348015610a4257600080fd5b5061023160048036036040811015610a5957600080fd5b50600160a060020a03813516906020013561178c565b348015610a7b57600080fd5b5061029560048036036040811015610a9257600080fd5b50600160a060020a0381358116916020013516611825565b348015610ab657600080fd5b50610183611850565b348015610acb57600080fd5b5061027e60048036036020811015610ae257600080fd5b5035600160a060020a0316611887565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b785780601f10610b4d57610100808354040283529160200191610b78565b820191906000526020600020905b815481529060010190602001808311610b5b57829003601f168201915b505050505081565b6000811580610bb05750336000908152600260209081526040808320600160a060020a0387168452909152902054155b1515610bbb57600080fd5b336000818152600260209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600854600160a060020a0316331480610c465750600054600160a060020a031633145b1515610c5157600080fd5b610c5b82826118e2565b505050565b60075490565b60085460a060020a900460ff1681565b60085460009060a060020a900460ff161515610c9157600080fd5b610c9c8484846119b3565b949350505050565b60055460ff1681565b600854600160a060020a031681565b7f7532eaac0000000000000000000000000000000000000000000000000000000081565b336000908152600260209081526040808320600160a060020a038616845290915281205480831115610d3557336000908152600260209081526040808320600160a060020a0388168452909152812055610d6a565b610d45818463ffffffff611b1a16565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600854600090819060a060020a900460ff161515610ded57600080fd5b610dfc8a8a8a8a8a8a8a611b2f565b1515610e0757600080fd5b50873b6000811115610f2c57600089905080600160a060020a03166338a7601b8c8b876040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610eb0578181015183820152602001610e98565b50505050905090810190601f168015610edd5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b5050505b5098975050505050505050565b600160a060020a031660009081526001602052604090205490565b60085460009060a060020a900460ff161515610f6f57600080fd5b610f7e88888888888888611b2f565b90505b979650505050505050565b60606000610f9d8989898989611429565b600160a060020a038a166000908152600360205260409020549091508514610ffa57505060408051808201909152601581527f4e6f6e636520646f6573206e6f74206d617463682e00000000000000000000006020820152610f81565b600160a060020a03891615806110c85750604080518082018252601c8082527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080840191825293516110b294869391019182918083835b602083106110725780518252601f199092019160209182019101611053565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912091508690506116b5565b600160a060020a031689600160a060020a031614155b1561113257606060405190810160405280603281526020017f4d69736d6174636820696e207369676e696e67206163636f756e74206f72207081526020017f6172616d65746572206d69736d617463682e0000000000000000000000000000815250915050610f81565b600160a060020a0389166000908152600160205260409020548711156111b757606060405190810160405280603181526020017f5472616e7366657220616d6f756e74206578636565647320746f6b656e20626181526020017f6c616e6365206f6e20616464726573732e000000000000000000000000000000815250915050610f81565b600160a060020a0389166000908152600160205260409020546111e0888863ffffffff611d4916565b111561124b57606060405190810160405280602481526020017f496e73756666696369656e7420746f6b656e7320746f2070617920666f72206681526020017f6565732e00000000000000000000000000000000000000000000000000000000815250915050610f81565b600160a060020a03831660009081526001602052604090205486810110156112a857505060408051808201909152600f81527f4f766572666c6f77206572726f722e00000000000000000000000000000000006020820152610f81565b505060408051808201909152601281527f416c6c20636865636b7320636c656172656400000000000000000000000000006020820152979650505050505050565b600081116112f657600080fd5b3360009081526001602052604090205481111561131257600080fd5b33600081815260016020526040902054611332908363ffffffff611b1a16565b600160a060020a03821660009081526001602052604090205560075461135e908363ffffffff611b1a16565b600755604080518381529051600160a060020a038316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600054600160a060020a031681565b600160a060020a031660009081526003602052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b785780601f10610b4d57610100808354040283529160200191610b78565b604080517f7532eaac000000000000000000000000000000000000000000000000000000006020808301919091526c010000000000000000000000003081026024840152600160a060020a039889168102603884015297909616909602604c8701526060860193909352608085019190915260a0808501919091528151808503909101815260c09093019052815191012090565b60085460009060a060020a900460ff1615156114d857600080fd5b6114e283836118e2565b9392505050565b600054600160a060020a0316331461150057600080fd5b6008805474ff0000000000000000000000000000000000000000191660a060020a179055565b600054600160a060020a0316331461153d57600080fd5b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600854600090819060a060020a900460ff16151561158957600080fd5b61159385856118e2565b151561159e57600080fd5b50833b60008111156116ad576040517f38a7601b0000000000000000000000000000000000000000000000000000000081523360048201818152602483018790526060604484019081528651606485015286518994600160a060020a038616946338a7601b9490938b938b9360840190602085019080838360005b83811015611631578181015183820152602001611619565b50505050905090810190601f16801561165e5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d60208110156116a957600080fd5b5050505b509392505050565b600080600080845160411415156116d25760009350505050610c1d565b50505060208201516040830151606084015160001a601b60ff821610156116f757601b015b8060ff16601b1415801561170f57508060ff16601c14155b156117205760009350505050610c1d565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015611777573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b336000908152600260209081526040808320600160a060020a03861684529091528120546117c0908363ffffffff611d4916565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015281565b600054600160a060020a0316331461189e57600080fd5b600160a060020a03811615156118b357600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a03831615156118f957600080fd5b3360009081526001602052604090205482111561191557600080fd5b33600090815260016020526040902054611935908363ffffffff611b1a16565b3360009081526001602052604080822092909255600160a060020a03851681522054611967908363ffffffff611d4916565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191923392600080516020611d5c8339815191529281900390910190a350600192915050565b6000600160a060020a03831615156119ca57600080fd5b600160a060020a0384166000908152600160205260409020548211156119ef57600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115611a1f57600080fd5b600160a060020a038416600090815260016020526040902054611a48908363ffffffff611b1a16565b600160a060020a038086166000908152600160205260408082209390935590851681522054611a7d908363ffffffff611d4916565b600160a060020a038085166000908152600160209081526040808320949094559187168152600282528281203382529091522054611ac1908363ffffffff611b1a16565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611d5c833981519152929181900390910190a35060019392505050565b600082821115611b2957600080fd5b50900390565b600080611b3f8989898989611429565b9050600160a060020a03891615801590611bb55750604080518082018252601c8082527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208084019182529351611ba09486939101918291808383611072565b600160a060020a031689600160a060020a0316145b1515611bc057600080fd5b600160a060020a0389166000908152600360205260409020548514611be457600080fd5b600160a060020a03891660009081526003602090815260408083206001808a01909155909152902054611c1d908863ffffffff611b1a16565b600160a060020a03808b1660009081526001602052604080822093909355908a1681522054611c52908863ffffffff611d4916565b600160a060020a03808a166000818152600160209081526040918290209490945580518b815290519193928d1692600080516020611d5c83398151915292918290030190a3600160a060020a038916600090815260016020526040902054611cc0908763ffffffff611b1a16565b600160a060020a03808b166000908152600160205260408082209390935590851681522054611cf5908763ffffffff611d4916565b600160a060020a038085166000818152600160209081526040918290209490945580518a815290519193928d1692600080516020611d5c83398151915292918290030190a350600198975050505050505050565b6000828201838110156114e257600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202a216394ef8b61cc54e240814c91340d63c9b6208d9c0a2d03afb4ccd8c386f30029