gittoken-api-middleware
Version:
GitToken Express Middleware for GitHub Webhook Endpoints
81 lines (42 loc) • 61.6 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _web = require('web3');
var _web2 = _interopRequireDefault(_web);
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _KeystoreGenerator2 = require('./KeystoreGenerator');
var _KeystoreGenerator3 = _interopRequireDefault(_KeystoreGenerator2);
var _index = require('./analytics/index');
var _index2 = _interopRequireDefault(_index);
var _configure = require('./analytics/configure');
var _configure2 = _interopRequireDefault(_configure);
var _index3 = require('./auction/index');
var _index4 = _interopRequireDefault(_index3);
var _configure3 = require('./auction/configure');
var _configure4 = _interopRequireDefault(_configure3);
var _index5 = require('./smtp/index');
var _index6 = require('./websocket/index');
var _index7 = require('./utils/index');
var _index8 = require('./api/index');
var _index9 = _interopRequireDefault(_index8);
var _index10 = require('./hyperlog/index');
var _index11 = require('./events/index');
var _index12 = require('./contract/index');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var GitTokenContract = '{\n "contract_name": "GitToken",\n "abi": [\n {\n "constant": false,\n "inputs": [\n {\n "name": "_initialPrice",\n "type": "uint256"\n },\n {\n "name": "_delay",\n "type": "uint256"\n },\n {\n "name": "_tokenLimitFactor",\n "type": "uint256"\n },\n {\n "name": "_lockTokens",\n "type": "bool"\n }\n ],\n "name": "initializeAuction",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "name",\n "outputs": [\n {\n "name": "_name",\n "type": "string"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_spender",\n "type": "address"\n },\n {\n "name": "_value",\n "type": "uint256"\n }\n ],\n "name": "approve",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "totalSupply",\n "outputs": [\n {\n "name": "_supply",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "_username",\n "type": "string"\n }\n ],\n "name": "getContributorAddress",\n "outputs": [\n {\n "name": "_contributorAddress",\n "type": "address"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_from",\n "type": "address"\n },\n {\n "name": "_to",\n "type": "address"\n },\n {\n "name": "_value",\n "type": "uint256"\n }\n ],\n "name": "transferFrom",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "organization",\n "outputs": [\n {\n "name": "_organization",\n "type": "string"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "decimals",\n "outputs": [\n {\n "name": "_decimals",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "getTokenLockUntilDate",\n "outputs": [\n {\n "name": "_lockedUntil",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "_contributorAddress",\n "type": "address"\n }\n ],\n "name": "getContributorUsername",\n "outputs": [\n {\n "name": "_username",\n "type": "string"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_rewardValue",\n "type": "uint256"\n },\n {\n "name": "_rewardType",\n "type": "string"\n }\n ],\n "name": "setRewardValue",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "",\n "type": "address"\n }\n ],\n "name": "owner",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "_holder",\n "type": "address"\n }\n ],\n "name": "balanceOf",\n "outputs": [\n {\n "name": "_balance",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "_username",\n "type": "string"\n }\n ],\n "name": "getUnclaimedRewards",\n "outputs": [\n {\n "name": "_value",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "_rewardType",\n "type": "string"\n },\n {\n "name": "_reservedType",\n "type": "string"\n }\n ],\n "name": "getRewardDetails",\n "outputs": [\n {\n "name": "_rewardValue",\n "type": "uint256"\n },\n {\n "name": "_reservedValue",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "symbol",\n "outputs": [\n {\n "name": "_symbol",\n "type": "string"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_to",\n "type": "address"\n },\n {\n "name": "_value",\n "type": "uint256"\n }\n ],\n "name": "transfer",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_auctionRound",\n "type": "uint256"\n },\n {\n "name": "_exchangeRate",\n "type": "uint256"\n }\n ],\n "name": "executeBid",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": true,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [],\n "name": "getAuctionRound",\n "outputs": [\n {\n "name": "",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_reservedValue",\n "type": "uint256"\n },\n {\n "name": "_rewardType",\n "type": "string"\n },\n {\n "name": "_reservedType",\n "type": "string"\n }\n ],\n "name": "setReservedValue",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_contributor",\n "type": "address"\n },\n {\n "name": "_username",\n "type": "string"\n }\n ],\n "name": "verifyContributor",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "_owner",\n "type": "address"\n },\n {\n "name": "_spender",\n "type": "address"\n }\n ],\n "name": "allowance",\n "outputs": [\n {\n "name": "_allowance",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "_username",\n "type": "string"\n },\n {\n "name": "_rewardType",\n "type": "string"\n },\n {\n "name": "_reservedType",\n "type": "string"\n },\n {\n "name": "_rewardBonus",\n "type": "uint256"\n },\n {\n "name": "_deliveryID",\n "type": "string"\n }\n ],\n "name": "rewardContributor",\n "outputs": [\n {\n "name": "",\n "type": "bool"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": true,\n "inputs": [\n {\n "name": "auctionRound",\n "type": "uint256"\n }\n ],\n "name": "getAuctionDetails",\n "outputs": [\n {\n "name": "",\n "type": "uint256[11]"\n },\n {\n "name": "",\n "type": "uint256[]"\n },\n {\n "name": "",\n "type": "uint256[]"\n }\n ],\n "payable": false,\n "type": "function"\n },\n {\n "constant": false,\n "inputs": [\n {\n "name": "newOwner",\n "type": "address"\n }\n ],\n "name": "transferOwnership",\n "outputs": [],\n "payable": false,\n "type": "function"\n },\n {\n "inputs": [\n {\n "name": "_contributor",\n "type": "address"\n },\n {\n "name": "_name",\n "type": "string"\n },\n {\n "name": "_username",\n "type": "string"\n },\n {\n "name": "_organization",\n "type": "string"\n },\n {\n "name": "_symbol",\n "type": "string"\n },\n {\n "name": "_decimals",\n "type": "uint256"\n }\n ],\n "payable": false,\n "type": "constructor"\n },\n {\n "payable": false,\n "type": "fallback"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "owner",\n "type": "address"\n },\n {\n "indexed": true,\n "name": "spender",\n "type": "address"\n },\n {\n "indexed": false,\n "name": "value",\n "type": "uint256"\n }\n ],\n "name": "Approval",\n "type": "event"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "from",\n "type": "address"\n },\n {\n "indexed": true,\n "name": "to",\n "type": "address"\n },\n {\n "indexed": false,\n "name": "value",\n "type": "uint256"\n }\n ],\n "name": "Transfer",\n "type": "event"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "contributor",\n "type": "address"\n },\n {\n "indexed": false,\n "name": "username",\n "type": "string"\n },\n {\n "indexed": false,\n "name": "value",\n "type": "uint256"\n },\n {\n "indexed": false,\n "name": "reservedValue",\n "type": "uint256"\n },\n {\n "indexed": false,\n "name": "date",\n "type": "uint256"\n },\n {\n "indexed": false,\n "name": "rewardType",\n "type": "string"\n }\n ],\n "name": "Contribution",\n "type": "event"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "contributor",\n "type": "address"\n },\n {\n "indexed": false,\n "name": "username",\n "type": "string"\n },\n {\n "indexed": false,\n "name": "date",\n "type": "uint256"\n }\n ],\n "name": "ContributorVerified",\n "type": "event"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": false,\n "name": "rewardType",\n "type": "string"\n },\n {\n "indexed": false,\n "name": "reservedType",\n "type": "string"\n },\n {\n "indexed": false,\n "name": "value",\n "type": "uint256"\n },\n {\n "indexed": false,\n "name": "date",\n "type": "uint256"\n }\n ],\n "name": "RewardValueSet",\n "type": "event"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": false,\n "name": "auctionDetails",\n "type": "uint256[8]"\n }\n ],\n "name": "Auction",\n "type": "event"\n },\n {\n "anonymous": false,\n "inputs": [\n {\n "indexed": false,\n "name": "bidDetails",\n "type": "uint256[9]"\n }\n ],\n "name": "AuctionBid",\n "type": "event"\n }\n ],\n "unlinked_binary": "0x606060405234156200001057600080fd5b604051620040003803806200400083398101604052808051919060200180518201919060200180518201919060200180518201919060200180518201919060200180519150505b5b600160a060020a0333166000908152602081905260409020805460ff191660011790555b600160a060020a038616156200015457600160a060020a038616600090815260208181526040808320805460ff19166001179055600b9091529020848051620000ca92916020019062000c55565b5085600c856040518082805190602001908083835b602083106200010157805182525b601f199092019160209182019101620000df565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040519081900390208054600160a060020a031916600160a060020a03929092169190911790555b600060015560038580516200016e92916020019062000c55565b5060048380516200018492916020019062000c55565b5060058280516200019a92916020019062000c55565b5060028190556000600a6040517f6f7267616e697a6174696f6e00000000000000000000000000000000000000008152600c810191909152602c0160405180910390206040517f6d656d6265725f696e76697465640000000000000000000000000000000000008152600e810191909152602e0160405180910390208190555080600a0a613a980260016009016040517f6f7267616e697a6174696f6e00000000000000000000000000000000000000008152600c810191909152602c0160405180910390206040517f6d656d6265725f616464656400000000000000000000000000000000000000008152600c810191909152602c01604051908190039020556109c4600a82900a0260096040517f70696e6700000000000000000000000000000000000000000000000000000000815260048101919091526024016040519081900390205560fa600a82900a0260096040517f636f6d6d69745f636f6d6d656e740000000000000000000000000000000000008152600e810191909152602e01604051908190039020556109c4600a82900a0260096040517f63726561746500000000000000000000000000000000000000000000000000008152600681019190915260260160405190819003902055600060096040517f64656c65746500000000000000000000000000000000000000000000000000008152600681019190915260260160405190819003902055611388600a82900a0260096040517f6465706c6f796d656e74000000000000000000000000000000000000000000008152600a810191909152602a01604051908190039020556064600a82900a0260096040517f6465706c6f796d656e745f7374617475730000000000000000000000000000008152601181019190915260310160405190819003902055611388600a82900a0260096040517f666f726b0000000000000000000000000000000000000000000000000000000081526004810191909152602401604051908190039020556064600a82900a0260096040517f676f6c6c756d0000000000000000000000000000000000000000000000000000815260068101919091526026016040519081900390205560fa600a82900a0260096040517f696e7374616c6c6174696f6e00000000000000000000000000000000000000008152600c810191909152602c01604051908190039020556103e8600a82900a0260096040517f696e7374616c6c6174696f6e5f7265706f7369746f7269657300000000000000815260198101919091526039016040519081900390205560fa600a82900a0260096040517f69737375655f636f6d6d656e74000000000000000000000000000000000000008152600d810191909152602d01604051908190039020556101f4600a82900a0260096040517f697373756573000000000000000000000000000000000000000000000000000081526006810191909152602601604051908190039020556064600a82900a0260096040517f6c6162656c0000000000000000000000000000000000000000000000000000008152600581019190915260250160405190819003902055600060096040517f6d61726b6574706c6163655f707572636861736573000000000000000000000081526015810191909152603501604051908190039020556103e8600a82900a0260096040517f6d656d626572000000000000000000000000000000000000000000000000000081526006810191909152602601604051908190039020556103e8600a82900a0260096040517f6d656d62657273686970000000000000000000000000000000000000000000008152600a810191909152602a016040519081900390205560fa600a82900a0260096040517f6d696c6573746f6e65000000000000000000000000000000000000000000000081526009810191909152602901604051908190039020556103e8600a82900a0260096040517f6f7267616e697a6174696f6e00000000000000000000000000000000000000008152600c810191909152602c0160405190819003902055600060096040517f6f72675f626c6f636b000000000000000000000000000000000000000000000081526009810191909152602901604051908190039020556101f4600a82900a0260096040517f706167655f6275696c64000000000000000000000000000000000000000000008152600a810191909152602a016040519081900390205560fa600a82900a0260096040517f70726f6a6563745f6361726400000000000000000000000000000000000000008152600c810191909152602c01604051908190039020556032600a82900a0260096040517f70726f6a6563745f636f6c756d6e0000000000000000000000000000000000008152600e810191909152602e01604051908190039020556103e8600a82900a0260096040517f70726f6a656374000000000000000000000000000000000000000000000000008152600781019190915260270160405190819003902055612710600a82900a0260096040517f7075626c69630000000000000000000000000000000000000000000000000000815260068101919091526026016040519081900390205560fa600a82900a0260096040517f70756c6c5f726571756573745f7265766965775f636f6d6d656e7400000000008152601b810191909152603b016040519081900390205560fa600a82900a0260096040517f70756c6c5f726571756573745f7265766965770000000000000000000000000081526013810191909152603301604051908190039020556109c4600a82900a0260096040517f70756c6c5f7265717565737400000000000000000000000000000000000000008152600c810191909152602c01604051908190039020556103e8600a82900a0260096040517f707573680000000000000000000000000000000000000000000000000000000081526004810191909152602401604051908190039020556109c4600a82900a0260096040517f7265706f7369746f7279000000000000000000000000000000000000000000008152600a810191909152602a0160405190819003902055611388600a82900a0260096040517f72656c6561736500000000000000000000000000000000000000000000000000815260078101919091526027016040519081900390205560c8600a82900a0260096040517f737461747573000000000000000000000000000000000000000000000000000081526006810191909152602601604051908190039020556107d0600a82900a0260096040517f7465616d0000000000000000000000000000000000000000000000000000000081526004810191909152602401604051908190039020556107d0600a82900a0260096040517f7465616d5f61646400000000000000000000000000000000000000000000000081526008810191909152602801604051908190039020556064600a82900a0260096040517f77617463680000000000000000000000000000000000000000000000000000008152600581019190915260250160405180910390208190555080600a0a619c400260016009016040517f6d696c6573746f6e6500000000000000000000000000000000000000000000008152600981019190915260290160405180910390206040517f636c6f736564000000000000000000000000000000000000000000000000000081526006810191909152602601604051908190039020555b50505050505062000cff565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c9857805160ff191683800117855562000cc8565b8280016001018555821562000cc8579182015b8281111562000cc857825182559160200191906001019062000cab565b5b5062000cd792915062000cdb565b5090565b62000cfc91905b8082111562000cd7576000815560010162000ce2565b5090565b90565b6132f18062000d0f6000396000f300606060405236156101465763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302439dde811461015e57806306fdde0314610193578063095ea7b31461021e57806318160ddd146102545780631e923ded1461027957806323b872dd146102e657806323bd4d7a14610322578063313ce567146103ad57806355d67427146103d257806355ded44d146103f757806366253c441461048e578063666e1b39146104f857806370a082311461052b57806376500a7e1461055c57806392956c1e146105bf57806395d89b411461066a578063a9059cbb146106f5578063a9c7c5361461072b578063b763831c1461074d578063cdf25db314610772578063d85600ca1461081e578063dd62ed3e14610891578063e9dc1a95146108c8578063f20e5e35146109fc578063f2fde38b14610ad8575b341561015157600080fd5b61015c5b600080fd5b565b005b341561016957600080fd5b61017f6004356024356044356064351515610af9565b604051901515815260200160405180910390f35b341561019e57600080fd5b6101a6610b9b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101e35780820151818401525b6020016101ca565b50505050905090810190601f1680156102105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022957600080fd5b61017f600160a060020a0360043516602435610c45565b604051901515815260200160405180910390f35b341561025f57600080fd5b610267610cfb565b60405190815260200160405180910390f35b341561028457600080fd5b6102ca60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d0295505050505050565b604051600160a060020a03909116815260200160405180910390f35b34156102f157600080fd5b61017f600160a060020a0360043581169060243516604435610d7d565b604051901515815260200160405180910390f35b341561032d57600080fd5b6101a6610e11565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101e35780820151818401525b6020016101ca565b50505050905090810190601f1680156102105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b857600080fd5b610267610ebb565b60405190815260200160405180910390f35b34156103dd57600080fd5b610267610ec2565b60405190815260200160405180910390f35b341561040257600080fd5b6101a6600160a060020a0360043516610ec9565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101e35780820151818401525b6020016101ca565b50505050905090810190601f1680156102105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561049957600080fd5b61017f600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610f9a95505050505050565b604051901515815260200160405180910390f35b341561050357600080fd5b61017f600160a060020a03600435166110ef565b604051901515815260200160405180910390f35b341561053657600080fd5b610267600160a060020a0360043516611104565b60405190815260200160405180910390f35b341561056757600080fd5b61026760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061112395505050505050565b60405190815260200160405180910390f35b34156105ca57600080fd5b61065260046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061119495505050505050565b60405191825260208201526040908101905180910390f35b341561067557600080fd5b6101a66112d6565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101e35780820151818401525b6020016101ca565b50505050905090810190601f1680156102105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070057600080fd5b61017f600160a060020a0360043516602435611380565b604051901515815260200160405180910390f35b61017f600435602435611400565b604051901515815260200160405180910390f35b341561075857600080fd5b610267611478565b60405190815260200160405180910390f35b341561077d57600080fd5b61017f600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965061147f95505050505050565b604051901515815260200160405180910390f35b341561082957600080fd5b61017f60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061169495505050505050565b604051901515815260200160405180910390f35b341561089c57600080fd5b610267600160a060020a036004358116906024351661178f565b60405190815260200160405180910390f35b34156108d357600080fd5b61017f60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506117bc95505050505050565b604051901515815260200160405180910390f35b3415610a0757600080fd5b610a12600435611ae0565b604051808461016080838360005b83811015610a395780820151818401525b602001610a20565b505050509050018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610a815780820151818401525b602001610a68565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610ac15780820151818401525b602001610aa8565b505050509050019550505050505060405180910390f35b3415610ae357600080fd5b61015c600160a060020a0360043516611c3f565b005b600160a060020a03331660009081526020819052604081205460ff161515610b2057600080fd5b7ff2c93682ed3c2de57c1a5b8d87987bc473b3c43950036e9b69234c19b24473ea610b5560018787878763ffffffff611cc516565b604051808261010080838360005b83811015610b7c5780820151818401525b602001610b63565b5050505090500191505060405180910390a15060015b5b949350505050565b610ba361315f565b60038054600260001961010060018416150201909116046020601f82018190048102016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c3a5780601f10610c0f57610100808354040283529160200191610c3a565b820191906000526020600020905b815481529060010190602001808311610c1d57829003601f168201915b505050505090505b90565b6000600236604414610c5657600080fd5b82158015610c875750600160a060020a033381166000908152600d6020908152604080832093881683529290522054155b1515610c9257600080fd5b600160a060020a033381166000818152600d6020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a35b5b5092915050565b6001545b90565b6000600c826040518082805190602001908083835b60208310610d3757805182525b601f199092019160209182019101610d17565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a031690505b919050565b6007546000904211610d8e57600080fd5b600336606414610d9d57600080fd5b610db0600186868663ffffffff611f5316565b1515610dbb57600080fd5b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405190815260200160405180910390a3600191505b5b505b9392505050565b610e1961315f565b60048054600260001961010060018416150201909116046020601f82018190048102016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c3a5780601f10610c0f57610100808354040283529160200191610c3a565b820191906000526020600020905b815481529060010190602001808311610c1d57829003601f168201915b505050505090505b90565b6002545b90565b6007545b90565b610ed161315f565b6001600a01600083600160a060020a0316600160a060020a031681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8d5780601f10610f6257610100808354040283529160200191610f8d565b820191906000526020600020905b815481529060010190602001808311610f7057829003601f168201915b505050505090505b919050565b600160a060020a03331660009081526020819052604081205460ff161515610fc157600080fd5b826009836040518082805190602001908083835b60208310610ff557805182525b601f199092019160209182019101610fd5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020557fbab878453bea46cf2222f6dd20b3fa8d80dc6ca2b5d4f854173f07227a21e1a6828442604051808060200180602001858152602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561109c5780820151818401525b602001611083565b50505050905090810190601f1680156110c95780820380516001836020036101000a031916815260200191505b5092830390525060008152604090810193509150505180910390a15060015b5b92915050565b60006020819052908152604090205460ff1681565b600160a060020a0381166000908152600e60205260409020545b919050565b6000600f826040518082805190602001908083835b6020831061115857805182525b601f199092019160209182019101611138565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205490505b919050565b6000806009846040518082805190602001908083835b602083106111ca57805182525b601f1990920191602091820191016111aa565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600a856040518082805190602001908083835b6020831061123257805182525b601f199092019160209182019101611212565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020846040518082805190602001908083835b6020831061129657805182525b601f199092019160209182019101611276565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915091505b9250929050565b6112de61315f565b60058054600260001961010060018416150201909116046020601f82018190048102016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c3a5780601f10610c0f57610100808354040283529160200191610c3a565b820191906000526020600020905b815481529060010190602001808311610c1d57829003601f168201915b505050505090505b90565b600754600090421161139157600080fd5b6113a36001848463ffffffff61203816565b15156113ae57600080fd5b82600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b92915050565b60007f71e9115058326fa6f488debb25321c912f2e9df24f42a99f4a976822672ffee46114356001858563ffffffff6120c016565b604051808261012080838360005b8381101561145c5780820151818401525b602001611443565b5050505090500191505060405180910390a15060015b92915050565b6006545b90565b600160a060020a03331660009081526020819052604081205460ff1615156114a657600080fd5b83600a846040518082805190602001908083835b602083106114da57805182525b601f1990920191602091820191016114ba565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020836040518082805190602001908083835b6020831061153e57805182525b601f19909201916020918201910161151e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020557fbab878453bea46cf2222f6dd20b3fa8d80dc6ca2b5d4f854173f07227a21e1a683838642604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156115e65780820151818401525b6020016115cd565b50505050905090810190601f1680156116135780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561164a5780820151818401525b602001611631565b50505050905090810190601f1680156116775780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15060015b5b9392505050565b600160a060020a03331660009081526020819052604081205460ff1615156116bb57600080fd5b6116cd6001848463ffffffff6125a716565b15156116d857600080fd5b82600160a060020a03167fce96c271d8db9db4a90e538f30d7ec5a63f116893c4636688d9ce1502b5cc93683426040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156117495780820151818401525b602001611730565b50505050905090810190601f1680156117765780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25060015b5b92915050565b600160a060020a038083166000908152600d60209081526040808320938516835292905220545b92915050565b600160a060020a03331660009081526020819052604081205460ff1615156117e357600080fd5b6117f86001878787878763ffffffff612b2c16565b151561180357600080fd5b600c866040518082805190602001908083835b6020831061183657805182525b601f199092019160209182019101611816565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03167f270e8b0620bd7a85855d0ae9401e7fa30ea6319fbf06c05f38cad80875f1cc018761190e8660098a6040518082805190602001908083835b602083106118cd57805182525b601f1990920191602091820191016118ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020549063ffffffff612fb716565b600a896040518082805190602001908083835b6020831061194157805182525b601f199092019160209182019101611921565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020886040518082805190602001908083835b602083106119a557805182525b601f199092019160209182019101611985565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054428a604051808060200186815260200185815260200184815260200180602001838103835288818151815260200191508051906020019080838360005b83811015611a2f5780820151818401525b602001611a16565b50505050905090810190601f168015611a5c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611a935780820151818401525b602001611a7a565b50505050905090810190601f168015611ac05780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a25060015b5b95945050505050565b611ae8613171565b611af061315f565b611af861315f565b6101606040519081016040908152600086815260086020818152838320805486526001810154828701526002810154858701526003810154606087015260048101546080870152600581015460a0870152600681015460c0870152600781015460e0870152808301546101008701526009810154610120870152600a81015461014087015292899052908152600b820180549093600c909301928492828102019051908101604052809291908181526020018280548015611bd857602002820191906000526020600020905b815481526020019060010190808311611bc4575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611c2a57602002820191906000526020600020905b815481526020019060010190808311611c16575b505050505090509250925092505b9193909250565b600160a060020a03331660009081526020819052604090205460ff161515611c6657600080fd5b600160a060020a03811660009081526020819052604090205460ff161515611cc057600160a060020a03808216600090815260208190526040808220805460ff199081166001179091553390931682529020805490911690555b5b5b50565b611ccd6131ab565b600160a060020a0330166000908152600d87016020526040812054819011611cf457600080fd5b60008611611d0157600080fd5b600160a060020a0330166000908152600d88016020526040902054861115611d2857600080fd5b6005870154611d3e90600163ffffffff612fb716565b600588015560008511611d54576203f480611d56565b845b6005880154600081815260078a0160205260409020559050611d7e428263ffffffff612fb716565b600588018054600090815260078a01602052604080822060019081019490945591548152200154611db5908263ffffffff612fb716565b6005808901805460009081526007808c016020818152604080852060020197909755600160a060020a0330168452600d8e018152868420548554855291905285832060040155825482528482209093018a90558154815283812060060181905590548152918220015585670de0b6b3a7640000811515611e3157fe5b30600160a060020a03166000908152600d8a01602090815260408083205460058d018054855260078e019093528184209590940490930260089094019390935582548152818120600901819055915482529020600a01849055821515600114611ea257600087600601819055611ed3565b60058701546000908152600788016020526040902060020154611ecb908263ffffffff612fb716565b876006018190555b5061010060405190810160409081526005808a0154808452600081815260078c01602081815285832060018101548289015260028101549688019690965260068e01546060880152600486015460808801529385015460a0870152600885015460c08701529190529052600a015460e082015291505b5095945050505050565b600160a060020a038084166000908152600c86016020908152604080832033909416835292905290812054611f8e818463ffffffff612fd316565b600160a060020a038087166000908152600c89016020908152604080832033851684528252808320949094559187168152600d89019091522054611fd8908463ffffffff612fb716565b600160a060020a038086166000908152600d89016020526040808220939093559087168152205461200f908463ffffffff612fd316565b600160a060020a0386166000908152600d88016020526040902055600191505b50949350505050565b600160a060020a0333166000908152600d84016020526040812054612063908363ffffffff612fd316565b600160a060020a033381166000908152600d87016020526040808220939093559085168152205461209a908363ffffffff612fb716565b600160a060020a0384166000908152600d860160205260409020555060015b9392505050565b6120c86131d3565b6000838152600785016020526040812060010154819081908190429011156120ef57600080fd5b60008781526007890160205260409020600201544290101561211057600080fd5b60008781526007890160205260408120600801541161212e57600080fd5b6000341161213b57600080fd5b60008781526007890160205260409020600b0180546001810161215e83826131fb565b916000526020600020900160005b503490555060008781526007890160205260409020600c0180546001810161219483826131fb565b916000526020600020900160005b8890919091505550612289886007016000898152602001908152602001600020600c0180548060200260200160405190810160405280929190818152602001828054801561220f57602002820191906000526020600020905b8154815260200190600101908083116121fb575b50505050508960070160008a8152602001908152602001600020600b0180548060200260200160405190810160405280929190818152602001828054801561227657602002820191906000526020600020905b815481526020019060010190808311612262575b5050505050612fec90919063ffffffff16565b600088815260078a01602052604090206006018190558611156122ab57600080fd5b60008781526007890160205260409020600a8101546006909101546305f5e10090910290879003106122dc57600080fd5b60008781526007890160205260409020600a8101546004909101546123069163ffffffff6130a116565b600088815260078a016020526040902060060154909450670de0b6b3a764000081151561232f57fe5b0484029250823411612342576000612346565b8234035b9150600082111561238257600160a060020a03331682156108fc0283604051600060405180830381858888f19350505050151561238257600080fd5b5b811561238f5782612391565b345b600088815260078a016020526040902060060154909150670de0b6b3a76400008115156123ba57fe5b04818115156123c557fe5b60058a015460009081526007808c016020526040909120015491900494506123f3908263ffffffff612fb716565b600589015460009081526007808b016020526040808320909101929092558881522060080154612429908263ffffffff612fd316565b600088815260078a016020908152604080832060080193909355600160a060020a0330168252600d8b0190522054612467908563ffffffff612fd316565b600160a060020a033081166000908152600d8b01602052604080822093909355339091168152205461249f908563ffffffff612fb716565b600160a060020a0333166000908152600d8a01602090815260408083209390935560058b0154825260078b01905220600401546124e2908563ffffffff612fd316565b6005890154600090815260078a01602052604080822060040192909255888152206009015461251890600163ffffffff612fb716565b600088815260078a016020526040908190206009019190915561012090519081016040908152888252602080830189905260008a81526007808d01808452848320600681015495870195909552606086018a90526080860187905260a086018890529084015460c0860152908b905290526008015460e08201524261010082015294505b505050509392505050565b6000600160a060020a03831615156125be57600080fd5b600084600e01836040518082805190602001908083835b602083106125f557805182525b601f1990920191602091820191016125d5565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020541115612752576126c384600e01836040518082805190602001908083835b6020831061266757805182525b601f199092019160209182019101612647565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a0385166000908152600d870160205260409020549063ffffffff612fb716565b600160a060020a0384166000908152600d860160205260408082209290925590600e8601908490518082805190602001908083835b6020831061271857805182525b601f1990920191602091820191016126f8565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902055612b20565b82600160a060020a031684600b01836040518082805190602001908083835b6020831061279157805182525b601f199092019160209182019101612771565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a0316148015906128665750600084600d01600086600b01856040518082805190602001908083835b6020831061281557805182525b601f1990920191602091820191016127f5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03168152602081019190915260400160002054115b15612a5e57600160a060020a0383166000908152600a850160205260409020828051612896929160200190613225565b508284600b01836040518082805190602001908083835b602083106128cd57805182525b601f1990920191602091820191016128ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055600d84016000600b8601846040518082805190602001908083835b6020831061296757805182525b601f199092019160209182019101612947565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03908116825260208083019390935260409182016000908120549187168152600d8801938490528281209190915591908290600b8801908690518082805190602001908083835b60208310612a0a57805182525b601f1990920191602091820191016129ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03168152602081019190915260400160002055612b20565b600160a060020a0383166000908152600a850160205260409020828051612a89929160200190613225565b508284600b01836040518082805190602001908083835b60208310612ac057805182525b601f199092019160209182019101612aa0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555b5b5060015b9392505050565b600080600080612bac868b6008018a6040518082805190602001908083835b602083106118cd57805182525b601f1990920191602091820191016118ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020549063ffffffff612fb716565b925089600901886040518082805190602001908083835b60208310612be357805182525b601f199092019160209182019101612bc3565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020876040518082805190602001908083835b60208310612c4757805182525b601f199092019160209182019101612c27565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915089600b01896040518082805190602001908083835b60208310612cb257805182525b601f199092019160209182019101612c92565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a031690506000831180612d015750600082115b1515612d0c57600080fd5b89600f01856040518082805190602001908083835b60208310612d4157805182525b601f199092019160209182019101612d21565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040519081900390205460ff1615612d8357600080fd5b8954612da7908390612d9b908663ffffffff612fb716565b9063ffffffff612fb716565b8a55600160a060020a0330166000908152600d8b016020526040902054612dd4908363ffffffff612fb716565b600160a060020a033081166000908152600d8d01602052604090209190915581161515612ee457612e75838b600e018b6040518082805190602001908083835b602083106118cd57805182525b601f1990920191602091820191016118ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020549063ffffffff612fb716565b8a600e018a6040518082805190602001908083835b60208310612eaa57805182525b601f199092019160209182019101612e8a565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902055612f2b565b600160a060020a0381166000908152600d8b016020526040902054612f0f908463ffffffff612fb716565b600160a060020a0382166000908152600d8c0160205260409020555b60018a600f01866040518082805190602001908083835b60208310612f6257805182525b601f199092019160209182019101612f42565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020805460ff1916911515919091179055600193505b5050509695505050505050565b6000828201612fc8848210156130bd565b8091505b5092915050565b6000612fe1838311156130bd565b508082035b92915050565b60008060008060008061300260008851116130bd565b61300f60008951116130bd565b613018886130cd565b945060009350600092505b86518310156130865787838151811061303857fe5b90602001906020020151915086838151811061305057fe5b9060200190602002015190506130788461307361306d8585613130565b886130a1565b612fb7565b93505b600190920191613023565b613092600085116130bd565b8395505b505050505092915050565b60008082848115156130af57fe5b0490508091505b5092915050565b801515611cc057600080fd5b5b50565b60008060006130df60008551116130bd565b5060009050805b83518110156131195761310e828583815181106130ff57fe5b90602001906020020151612fb7565b91505b6001016130e6565b613125600083116130bd565b8192505b5050919050565b6000828202612fc884158061314f575083858381151561314c57fe5b04145b6130bd565b8091505b5092915050565b60206040519081016040526000815290565b610160604051908101604052600b815b60008152602001906001900390816131815790505090565b60206040519081016040526000815290565b6101006040519081016040526008815b60008152602001906001900390816131815790505090565b6101206040519081016040526009815b60008152602001906001900390816131815790505090565b81548183558181151161321f5760008381526020902061321f9181019083016132a4565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061326657805160ff1916838001178555613293565b82800160010185558215613293579182015b82811115613293578251825591602001919060010190613278565b5b506132a09291506132a4565b5090565b610c4291905b808211156132a057600081556001016132aa565b5090565b905600a165627a7a72305820c5995b352ed48b0dda5adc4a2f87caf94bf79e351f1b699bf96042febd06c9900029",\n "networks": {\n "17": {\n "events": {\n "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "owner",\n "type": "address"\n },\n {\n "indexed": true,\n "name": "spender",\n "type": "address"\n },\n {\n "indexed": false,\n "name": "value",\n "type": "uint256"\n }\n ],\n "name": "Approval",\n "type": "event"\n },\n "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "from",\n "type": "address"\n },\n {\n "indexed": true,\n "name": "to",\n "type": "address"\n },\n {\n "indexed": false,\n "name": "value",\n "type": "uint256"\n }\n ],\n "name": "Transfer",\n "type": "event"\n },\n "0x270e8b0620bd7a85855d0ae9401e7fa30ea6319fbf06c05f38cad80875f1cc01": {\n "anonymous": false,\n "inputs": [\n {\n "indexed": true,\n "name": "contributor",\n "type": "address"\n