0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636fcfff45116100715780636fcfff451461020a57806370a082311461024957806395d89b411461026f578063a9059cbb14610277578063dd62ed3e146102a3578063f1127ed8146102d1576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd1461019057806327e235e3146101c6578063313ce567146101ec575b600080fd5b6100c1610323565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610345565b604080519115158252519081900360200190f35b61017e6103e8565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b038135811691602081013590911690604001356103ee565b61017e600480360360208110156101dc57600080fd5b50356001600160a01b0316610509565b6101f461051b565b6040805160ff9092168252519081900360200190f35b6102306004803603602081101561022057600080fd5b50356001600160a01b0316610520565b6040805163ffffffff9092168252519081900360200190f35b61017e6004803603602081101561025f57600080fd5b50356001600160a01b0316610538565b6100c1610553565b6101626004803603604081101561028d57600080fd5b506001600160a01b038135169060200135610573565b61017e600480360360408110156102b957600080fd5b506001600160a01b03813581169160200135166105af565b610303600480360360408110156102e757600080fd5b5080356001600160a01b0316906020013563ffffffff166105da565b6040805163ffffffff909316835260208301919091528051918290030190f35b6040518060400160405280600681526020016544435444414f60d01b81525081565b60008060001983141561035b5750600019610380565b61037d83604051806060016040528060268152602001610cf960269139610607565b90505b3360008181526002602090815260408083206001600160a01b03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60005481565b6001600160a01b03831660009081526002602090815260408083203380855290835281842054825160608101909352602680845291939092859261043c9288929190610cf990830139610607565b9050866001600160a01b0316836001600160a01b03161415801561046257506000198214155b156104f157600061048c83836040518060600160405280603d8152602001610c01603d913961066a565b6001600160a01b03808a166000818152600260209081526040808320948a168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b6104fc8787836106c4565b5060019695505050505050565b60016020526000908152604090205481565b601281565b60046020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526001602052604090205490565b604051806040016040528060048152602001631110d51160e21b81525081565b60008061059883604051806060016040528060278152602001610c3e60279139610607565b90506105a53385836106c4565b5060019392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60036020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b600081610662565b8381101561062757818101518382015260200161060f565b50505050905090810190601f1680156106545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b600081848411156106bc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561062757818101518382015260200161060f565b505050900390565b6001600160a01b0383166107095760405162461bcd60e51b815260040180806020018281038252603c815260200180610b95603c913960400191505060405180910390fd5b6001600160a01b03821661074e5760405162461bcd60e51b815260040180806020018281038252603a815260200180610c65603a913960400191505060405180910390fd5b61079660016000856001600160a01b03166001600160a01b031681526020019081526020016000205482604051806060016040528060368152602001610d1f6036913961066a565b6001600160a01b0380851660009081526001602090815260408083209490945591851681528290205482516060810190935260308084526107e393919285929190610bd19083013961084a565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36108458383836108a8565b505050565b6000838301828582101561089f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561062757818101518382015260200161060f565b50949350505050565b816001600160a01b0316836001600160a01b0316141580156108ca5750600081115b15610845576001600160a01b03831615610974576001600160a01b03831660009081526004602052604081205463ffffffff16908161090a57600061093c565b6001600160a01b038516600090815260036020908152604080832063ffffffff60001987011684529091529020600101545b905060006109638285604051806060016040528060278152602001610d556027913961066a565b9050610970868483610a1d565b5050505b6001600160a01b03821615610845576001600160a01b03821660009081526004602052604081205463ffffffff1690816109af5760006109e1565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001987011684529091529020600101545b90506000610a088285604051806060016040528060268152602001610c9f6026913961084a565b9050610a15858483610a1d565b505050505050565b6000610a4143604051806060016040528060348152602001610cc560349139610b3e565b905060008363ffffffff16118015610a8a57506001600160a01b038416600090815260036020908152604080832063ffffffff6000198801811685529252909120548282169116145b15610ac7576001600160a01b038416600090815260036020908152604080832063ffffffff60001988011684529091529020600101829055610b38565b60408051808201825263ffffffff808416825260208083018681526001600160a01b0389166000818152600384528681208a8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260049092529390208054928701909116919092161790555b50505050565b60008164010000000084106106625760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561062757818101518382015260200161060f56fe444354443a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373444354443a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773444354443a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365444354443a3a7472616e736665723a20616d6f756e742065786365656473203235362062697473444354443a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373444354443a3a5f6d6f766544656c6567617465733a20616d6f756e74206f766572666c6f7773444354443a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473444354443a3a617070726f76653a20616d6f756e742065786365656473203235362062697473444354443a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365444354443a3a5f6d6f766544656c6567617465733a20616d6f756e7420756e646572666c6f7773a26469706673582212205d7b3004ef48e3fbbb73348d5e74f9ca1802587542cbc645f0d0e4bb72e5c5fb64736f6c63430006060033
0x60806040523480156200001157600080fd5b5062000032336a084595161401484a0000006001600160e01b036200003816565b620004e2565b6001600160a01b0382166000818152600160209081526040808320859055825485018355805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3620000a5600083836001600160e01b03620000a916565b5050565b816001600160a01b0316836001600160a01b031614158015620000cc5750600081115b1562000250576001600160a01b0383161562000191576001600160a01b03831660009081526004602052604081205463ffffffff1690816200011057600062000142565b6001600160a01b038516600090815260036020908152604080832063ffffffff60001987011684529091529020600101545b90506000620001758285604051806060016040528060278152602001620012fd602791396001600160e01b036200025516565b90506200018d8684836001600160e01b03620002f016565b5050505b6001600160a01b0382161562000250576001600160a01b03821660009081526004602052604081205463ffffffff169081620001cf57600062000201565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001987011684529091529020600101545b90506000620002348285604051806060016040528060268152602001620012a3602691396001600160e01b036200042016565b90506200024c8584836001600160e01b03620002f016565b5050505b505050565b60008184841115620002e85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620002ac57818101518382015260200162000292565b50505050905090810190601f168015620002da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006200032043604051806060016040528060348152602001620012c9603491396001600160e01b036200048116565b905060008363ffffffff161180156200036a57506001600160a01b038416600090815260036020908152604080832063ffffffff6000198801811685529252909120548282169116145b15620003a9576001600160a01b038416600090815260036020908152604080832063ffffffff600019880116845290915290206001018290556200041a565b60408051808201825263ffffffff808416825260208083018681526001600160a01b0389166000818152600384528681208a8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260049092529390208054928701909116919092161790555b50505050565b60008383018285821015620004785760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620002ac57818101518382015260200162000292565b50949350505050565b6000816401000000008410620004da5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620002ac57818101518382015260200162000292565b509192915050565b610db180620004f26000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80636fcfff45116100715780636fcfff451461020a57806370a082311461024957806395d89b411461026f578063a9059cbb14610277578063dd62ed3e146102a3578063f1127ed8146102d1576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd1461019057806327e235e3146101c6578063313ce567146101ec575b600080fd5b6100c1610323565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610345565b604080519115158252519081900360200190f35b61017e6103e8565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b038135811691602081013590911690604001356103ee565b61017e600480360360208110156101dc57600080fd5b50356001600160a01b0316610509565b6101f461051b565b6040805160ff9092168252519081900360200190f35b6102306004803603602081101561022057600080fd5b50356001600160a01b0316610520565b6040805163ffffffff9092168252519081900360200190f35b61017e6004803603602081101561025f57600080fd5b50356001600160a01b0316610538565b6100c1610553565b6101626004803603604081101561028d57600080fd5b506001600160a01b038135169060200135610573565b61017e600480360360408110156102b957600080fd5b506001600160a01b03813581169160200135166105af565b610303600480360360408110156102e757600080fd5b5080356001600160a01b0316906020013563ffffffff166105da565b6040805163ffffffff909316835260208301919091528051918290030190f35b6040518060400160405280600681526020016544435444414f60d01b81525081565b60008060001983141561035b5750600019610380565b61037d83604051806060016040528060268152602001610cf960269139610607565b90505b3360008181526002602090815260408083206001600160a01b03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60005481565b6001600160a01b03831660009081526002602090815260408083203380855290835281842054825160608101909352602680845291939092859261043c9288929190610cf990830139610607565b9050866001600160a01b0316836001600160a01b03161415801561046257506000198214155b156104f157600061048c83836040518060600160405280603d8152602001610c01603d913961066a565b6001600160a01b03808a166000818152600260209081526040808320948a168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b6104fc8787836106c4565b5060019695505050505050565b60016020526000908152604090205481565b601281565b60046020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526001602052604090205490565b604051806040016040528060048152602001631110d51160e21b81525081565b60008061059883604051806060016040528060278152602001610c3e60279139610607565b90506105a53385836106c4565b5060019392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60036020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b600081610662565b8381101561062757818101518382015260200161060f565b50505050905090810190601f1680156106545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b600081848411156106bc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561062757818101518382015260200161060f565b505050900390565b6001600160a01b0383166107095760405162461bcd60e51b815260040180806020018281038252603c815260200180610b95603c913960400191505060405180910390fd5b6001600160a01b03821661074e5760405162461bcd60e51b815260040180806020018281038252603a815260200180610c65603a913960400191505060405180910390fd5b61079660016000856001600160a01b03166001600160a01b031681526020019081526020016000205482604051806060016040528060368152602001610d1f6036913961066a565b6001600160a01b0380851660009081526001602090815260408083209490945591851681528290205482516060810190935260308084526107e393919285929190610bd19083013961084a565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36108458383836108a8565b505050565b6000838301828582101561089f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561062757818101518382015260200161060f565b50949350505050565b816001600160a01b0316836001600160a01b0316141580156108ca5750600081115b15610845576001600160a01b03831615610974576001600160a01b03831660009081526004602052604081205463ffffffff16908161090a57600061093c565b6001600160a01b038516600090815260036020908152604080832063ffffffff60001987011684529091529020600101545b905060006109638285604051806060016040528060278152602001610d556027913961066a565b9050610970868483610a1d565b5050505b6001600160a01b03821615610845576001600160a01b03821660009081526004602052604081205463ffffffff1690816109af5760006109e1565b6001600160a01b038416600090815260036020908152604080832063ffffffff60001987011684529091529020600101545b90506000610a088285604051806060016040528060268152602001610c9f6026913961084a565b9050610a15858483610a1d565b505050505050565b6000610a4143604051806060016040528060348152602001610cc560349139610b3e565b905060008363ffffffff16118015610a8a57506001600160a01b038416600090815260036020908152604080832063ffffffff6000198801811685529252909120548282169116145b15610ac7576001600160a01b038416600090815260036020908152604080832063ffffffff60001988011684529091529020600101829055610b38565b60408051808201825263ffffffff808416825260208083018681526001600160a01b0389166000818152600384528681208a8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260049092529390208054928701909116919092161790555b50505050565b60008164010000000084106106625760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561062757818101518382015260200161060f56fe444354443a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373444354443a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773444354443a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365444354443a3a7472616e736665723a20616d6f756e742065786365656473203235362062697473444354443a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373444354443a3a5f6d6f766544656c6567617465733a20616d6f756e74206f766572666c6f7773444354443a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473444354443a3a617070726f76653a20616d6f756e742065786365656473203235362062697473444354443a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365444354443a3a5f6d6f766544656c6567617465733a20616d6f756e7420756e646572666c6f7773a26469706673582212205d7b3004ef48e3fbbb73348d5e74f9ca1802587542cbc645f0d0e4bb72e5c5fb64736f6c63430006060033444354443a3a5f6d6f766544656c6567617465733a20616d6f756e74206f766572666c6f7773444354443a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473444354443a3a5f6d6f766544656c6567617465733a20616d6f756e7420756e646572666c6f7773