60806040523480156200001157600080fd5b506040518060400160405280600781526020017f54414959414b49000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f54414959414b490000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000667565b508060049080519060200190620000af92919062000667565b506012600560006101000a81548160ff021916908360ff16021790555050506000620000e06200024660201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006012905062000196816200024e60201b60201c565b620001ba6000801b620001ae6200024660201b60201c565b6200026c60201b60201c565b6200021060405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620002046200024660201b60201c565b6200026c60201b60201c565b6200023f73fa3916579cfd0f4b8193b144fc9d6ce14dfdb0826856bc75e2d6310000006200028260201b60201c565b5062000716565b600033905090565b80600560006101000a81548160ff021916908360ff16021790555050565b6200027e82826200046060201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200033a600083836200050460201b60201c565b62000356816002546200050960201b62001b521790919060201c565b600281905550620003b4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200050960201b62001b521790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6200048f81600660008581526020019081526020016000206000016200059260201b62001e051790919060201c565b156200050057620004a56200024660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b60008082840190508381101562000588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000620005c2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620005ca60201b60201c565b905092915050565b6000620005de83836200064460201b60201c565b620006395782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200063e565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006aa57805160ff1916838001178555620006db565b82800160010185558215620006db579182015b82811115620006da578251825591602001919060010190620006bd565b5b509050620006ea9190620006ee565b5090565b6200071391905b808211156200070f576000816000905550600101620006f5565b5090565b90565b61228180620007266000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063a9059cbb1161007c578063a9059cbb14610731578063ca15c87314610797578063d5391393146107d9578063d547741f146107f7578063dd62ed3e14610845578063f2fde38b146108bd57610158565b80638da5cb5b146105025780639010d07c1461054c57806391d14854146105c457806395d89b411461062a578063a217fddf146106ad578063a457c2d7146106cb57610158565b8063313ce56711610115578063313ce5671461037a57806336568abe1461039e57806339509351146103ec57806340c10f191461045257806370a08231146104a0578063715018a6146104f857610158565b806306fdde031461015d578063095ea7b3146101e057806318160ddd1461024657806323b872dd14610264578063248a9ca3146102ea5780632f2ff15d1461032c575b600080fd5b610165610901565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a557808201518184015260208101905061018a565b50505050905090810190601f1680156101d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61022c600480360360408110156101f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109a3565b604051808215151515815260200191505060405180910390f35b61024e6109c1565b6040518082815260200191505060405180910390f35b6102d06004803603606081101561027a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109cb565b604051808215151515815260200191505060405180910390f35b6103166004803603602081101561030057600080fd5b8101908080359060200190929190505050610aa4565b6040518082815260200191505060405180910390f35b6103786004803603604081101561034257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ac4565b005b610382610b4e565b604051808260ff1660ff16815260200191505060405180910390f35b6103ea600480360360408110156103b457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b65565b005b6104386004803603604081101561040257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfe565b604051808215151515815260200191505060405180910390f35b61049e6004803603604081101561046857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cb1565b005b6104e2600480360360208110156104b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d70565b6040518082815260200191505060405180910390f35b610500610db8565b005b61050a610f28565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105826004803603604081101561056257600080fd5b810190808035906020019092919080359060200190929190505050610f52565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610610600480360360408110156105da57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f84565b604051808215151515815260200191505060405180910390f35b610632610fb6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610672578082015181840152602081019050610657565b50505050905090810190601f16801561069f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106b5611058565b6040518082815260200191505060405180910390f35b610717600480360360408110156106e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105f565b604051808215151515815260200191505060405180910390f35b61077d6004803603604081101561074757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061112c565b604051808215151515815260200191505060405180910390f35b6107c3600480360360208110156107ad57600080fd5b810190808035906020019092919050505061114a565b6040518082815260200191505060405180910390f35b6107e1611171565b6040518082815260200191505060405180910390f35b6108436004803603604081101561080d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111aa565b005b6108a76004803603604081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611234565b6040518082815260200191505060405180910390f35b6108ff600480360360208110156108d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bb565b005b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b5050505050905090565b60006109b76109b06114b0565b84846114b8565b6001905092915050565b6000600254905090565b60006109d88484846116af565b610a99846109e46114b0565b610a948560405180606001604052806028815260200161218760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a4a6114b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119709092919063ffffffff16565b6114b8565b600190509392505050565b600060066000838152602001908152602001600020600201549050919050565b610aeb6006600084815260200190815260200160002060020154610ae66114b0565b610f84565b610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806120ba602f913960400191505060405180910390fd5b610b4a8282611a2a565b5050565b6000600560009054906101000a900460ff16905090565b610b6d6114b0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061221d602f913960400191505060405180910390fd5b610bfa8282611abe565b5050565b6000610ca7610c0b6114b0565b84610ca28560016000610c1c6114b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b5290919063ffffffff16565b6114b8565b6001905092915050565b610cf060405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902033610f84565b610d62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616c6c6572206973206e6f742061206d696e7465720000000000000000000081525060200191505060405180910390fd5b610d6c8282611bda565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc06114b0565b73ffffffffffffffffffffffffffffffffffffffff16610dde610f28565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610f7c8260066000868152602001908152602001600020600001611da190919063ffffffff16565b905092915050565b6000610fae8260066000868152602001908152602001600020600001611dbb90919063ffffffff16565b905092915050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561104e5780601f106110235761010080835404028352916020019161104e565b820191906000526020600020905b81548152906001019060200180831161103157829003601f168201915b5050505050905090565b6000801b81565b600061112261106c6114b0565b8461111d856040518060600160405280602581526020016121f860259139600160006110966114b0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119709092919063ffffffff16565b6114b8565b6001905092915050565b60006111406111396114b0565b84846116af565b6001905092915050565b600061116a60066000848152602001908152602001600020600001611deb565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b6111d160066000848152602001908152602001600020600201546111cc6114b0565b610f84565b611226576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121576030913960400191505060405180910390fd5b6112308282611abe565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c36114b0565b73ffffffffffffffffffffffffffffffffffffffff166112e1610f28565b73ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120e96026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561153e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806121d46024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061210f6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611735576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806121af6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806120976023913960400191505060405180910390fd5b6117c6838383611e00565b61183181604051806060016040528060268152602001612131602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119709092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b5290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611a1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119e25780820151818401526020810190506119c7565b50505050905090810190601f168015611a0f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b611a528160066000858152602001908152602001600020600001611e0590919063ffffffff16565b15611aba57611a5f6114b0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611ae68160066000858152602001908152602001600020600001611e3590919063ffffffff16565b15611b4e57611af36114b0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611c8960008383611e00565b611c9e81600254611b5290919063ffffffff16565b600281905550611cf5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b5290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611db08360000183611e65565b60001c905092915050565b6000611de3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ee8565b905092915050565b6000611df982600001611f0b565b9050919050565b505050565b6000611e2d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f1c565b905092915050565b6000611e5d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f8c565b905092915050565b600081836000018054905011611ec6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806120756022913960400191505060405180910390fd5b826000018281548110611ed557fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b6000611f288383611ee8565b611f81578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611f86565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146120685760006001820390506000600186600001805490500390506000866000018281548110611fd757fe5b9060005260206000200154905080876000018481548110611ff457fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061202c57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061206e565b60009150505b9291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220cba66b23c7173f3c7014d22029bc2de9db3858cef82e88812550914cc99cd9d064736f6c63430006020033