"0x608060405234801561001057600080fd5b5060043610610112576000357c01000000000000000000000000000000000000000000000000000000009004806396e8d72c116100b4578063d3b3f73a11610083578063d3b3f73a1461050d578063d8a8e03a1461054f578063eb89ef781461059d578063fff0772c146105e657610112565b806396e8d72c146103c15780639a816f7d14610423578063b23aff9c1461047b578063b3d178f2146104d357610112565b80636090dec5116100f05780636090dec5146101f357806370372a15146102555780638c39d59a146102c357806392f932321461034957610112565b806305d85eda1461011757806326414cc81461016f5780632c2cb9fd146101b1575b600080fd5b6101596004803603602081101561012d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610640565b6040518082815260200191505060405180910390f35b61019b6004803603602081101561018557600080fd5b8101908080359060200190929190505050610658565b6040518082815260200191505060405180910390f35b6101dd600480360360208110156101c757600080fd5b810190808035906020019092919050505061069a565b6040518082815260200191505060405180910390f35b61023f6004803603604081101561020957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106b2565b6040518082815260200191505060405180910390f35b6102816004803603602081101561026b57600080fd5b8101908080359060200190929190505050610bbf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61032f600480360360608110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b604051808215151515815260200191505060405180910390f35b6103bf6004803603608081101561035f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c2e565b005b610421600480360360808110156103d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506112fc565b005b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611620565b6040518082815260200191505060405180910390f35b6104d16004803603606081101561049157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611638565b005b6104db611a38565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6105396004803603602081101561052357600080fd5b8101908080359060200190929190505050611a55565b6040518082815260200191505060405180910390f35b61059b6004803603604081101561056557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a68565b005b6105c9600480360360208110156105b357600080fd5b810190808035906020019092919050505061210a565b604051808381526020018281526020019250505060405180910390f35b61063e600480360360608110156105fc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061212e565b005b60056020528060005260406000206000915090505481565b6000816bffffffffffffffffffffffff166c010000000000000000000000003073ffffffffffffffffffffffffffffffffffffffff1602016001029050919050565b60036020528060005260406000206000915090505481565b6000806000806004359250602435915060443590508082846000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a460008081819054906101000a90046bffffffffffffffffffffffff168092919060010191906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505060008060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16111515610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f636470692d6f766572666c6f770000000000000000000000000000000000000081525060200191505060405180910390fd5b84600260008060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360008060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020819055506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610a4657600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600001819055506000809054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1660016000600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020600101819055505b6000809054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd6be0bc178658a382ff4f91c8c68b542aa6b71685b8fe427966b87745c3ea7a26000809054906101000a90046bffffffffffffffffffffffff1660405180826bffffffffffffffffffffffff16815260200191505060405180910390a36000809054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16935050505092915050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b60008060006004359250602435915060443590508082846000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a4856002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e045750600660006002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f742d616c6c6f77656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008873ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d6020811015610f0657600080fd5b8101908080519060200190929190505050905060018173ffffffffffffffffffffffffffffffffffffffff1663bf353dbb8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fb457600080fd5b505afa158015610fc8573d6000803e3d6000fd5b505050506040513d6020811015610fde57600080fd5b8101908080519060200190929190505050141515611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f756e6b6f776e2d6164617074657200000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16634538c4eb308b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d602081101561115b57600080fd5b81019080805190602001909291905050501515611226578073ffffffffffffffffffffffffffffffffffffffff1663a3b22fc48a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050505b8873ffffffffffffffffffffffffffffffffffffffff16638569cb5961124b8a610658565b89896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156112d957600080fd5b505af11580156112ed573d6000803e3d6000fd5b50505050505050505050505050565b60008060006004359250602435915060443590508082846000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a4856002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114d25750600660006002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f742d616c6c6f77656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061155188610658565b90508873ffffffffffffffffffffffffffffffffffffffff166341fd3ef7600360008b8152602001908152602001600020548384858c8c6040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808781526020018681526020018581526020018481526020018381526020018281526020019650505050505050600060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b50505050505050505050505050565b60046020528060005260406000206000915090505481565b60008060006004359250602435915060443590508082846000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a4846002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061180e5750600660006002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f742d616c6c6f77656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061188d87610658565b90506000808973ffffffffffffffffffffffffffffffffffffffff166326e27482600360008c815260200190815260200160002054856040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050604080518083038186803b15801561191957600080fd5b505afa15801561192d573d6000803e3d6000fd5b505050506040513d604081101561194357600080fd5b810190808051906020019092919080519060200190929190505050915091508973ffffffffffffffffffffffffffffffffffffffff16630adf15ef600360008c815260200190815260200160002054858b61199d876121d8565b6119a6876121d8565b6040518663ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018086815260200185815260200184815260200183815260200182815260200195505050505050600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b5050505050505050505050505050565b6000809054906101000a90046bffffffffffffffffffffffff1681565b6000611a6182336106b2565b9050919050565b60008060006004359250602435915060443590508082846000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a4846002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c3e5750600660006002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515611cb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6e6f742d616c6c6f77656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166002600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611d89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6473742d616c72656164792d6f776e657200000000000000000000000000000081525060200191505060405180910390fd5b600160008781526020019081526020016000206001015460016000600160008a81526020019081526020016000206000015481526020019081526020016000206001018190555060006001600088815260200190815260200160002060010154141515611e3c57600160008781526020019081526020016000206000015460016000600160008a815260200190815260200160002060010154815260200190815260200160002060000181905550611eca565b600160008781526020019081526020016000206000015460046000600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560006002600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550846002600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001600088815260200190815260200160002060000181905550600060016000888152602001908152602001600020600101819055508560016000600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000206001018190555085600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550505050505050565b60016020528060005260406000206000915090508060000154908060010154905082565b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b600081905060008112151515612256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e742d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b91905056fea165627a7a723058203f67b0fc1d9bdd51b89aa78f02609aed0be414a337cc170fa0d08b1647c43b350029"