{
  "contractName": "RenderableERC20Sale",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "numberOfStrategies",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "strategyAt",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_projectName",
          "type": "string"
        },
        {
          "name": "_projectSummary",
          "type": "string"
        },
        {
          "name": "_projectDescription",
          "type": "string"
        },
        {
          "name": "_logoUrl",
          "type": "string"
        },
        {
          "name": "_coverImageUrl",
          "type": "string"
        },
        {
          "name": "_websiteUrl",
          "type": "string"
        },
        {
          "name": "_whitepaperUrl",
          "type": "string"
        },
        {
          "name": "_videoUrl",
          "type": "string"
        },
        {
          "name": "_name",
          "type": "string"
        }
      ],
      "name": "update",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "activated",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC165",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "started",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC20Sale",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "whitepaperUrl",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "numberOfActivatedStrategies",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdraw",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "weiRaised",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "activatedStrategyAt",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "numberOfPurchasers",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_weiAmount",
          "type": "uint256"
        }
      ],
      "name": "purchasable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "template",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "videoUrl",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "projectDescription",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_template",
          "type": "address"
        },
        {
          "name": "_bytecode",
          "type": "bytes"
        }
      ],
      "name": "addStrategy",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "renderer",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "purchaserAt",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_purchaser",
          "type": "address"
        }
      ],
      "name": "tokenAmountOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "logoUrl",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "projectName",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "successful",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "projectSummary",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "websiteUrl",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "claimRefund",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "finished",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_weiAmount",
          "type": "uint256"
        }
      ],
      "name": "getTokenAmount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "withdrawn",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_projectName",
          "type": "string"
        },
        {
          "name": "_projectSummary",
          "type": "string"
        },
        {
          "name": "_projectDescription",
          "type": "string"
        },
        {
          "name": "_logoUrl",
          "type": "string"
        },
        {
          "name": "_coverImageUrl",
          "type": "string"
        },
        {
          "name": "_websiteUrl",
          "type": "string"
        },
        {
          "name": "_whitepaperUrl",
          "type": "string"
        },
        {
          "name": "_videoUrl",
          "type": "string"
        },
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "update",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_purchaser",
          "type": "address"
        }
      ],
      "name": "paymentOf",
      "outputs": [
        {
          "name": "weiAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Sale",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "coverImageUrl",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_Contract",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_projectName",
          "type": "string"
        },
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "purchaser",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "weiAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "TokenPurchase",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "adminWidgets",
      "outputs": [
        {
          "name": "jsonObject",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "userWidgets",
      "outputs": [
        {
          "name": "jsonObject",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        }
      ],
      "name": "inputs",
      "outputs": [
        {
          "name": "jsonArray",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620029f7380380620029f78339810160409081528151602083015191830151606084015160008054600160a060020a03191633179055919392830192019083838383838383826200008f7f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b600160a060020a0381161515620000a557600080fd5b6002805433600160a060020a03199182161790915560008054909116600160a060020a038316179055620001027f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b5081516200011890600390602085019062000249565b5080516200012e90600b90602084019062000249565b50620001637f5efbb02200000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b505050600160a060020a03811615156200017c57600080fd5b60138054600160a060020a031916600160a060020a038316179055620001cb7f90e2f49400000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b5050505050505050620002ee565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200020957600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028c57805160ff1916838001178555620002bc565b82800160010185558215620002bc579182015b82811115620002bc5782518255916020019190600101906200029f565b50620002ca929150620002ce565b5090565b620002eb91905b80821115620002ca5760008155600101620002d5565b90565b6126f980620002fe6000396000f30060806040526004361061020b5763ffffffff60e060020a60003504166301bd341181146102ef57806301ffc9a7146103bd57806306fdde03146104085780630956e5a61461041d5780630f15f4c0146104445780630fc8c0b614610459578063184efbb01461048d578063186601ca146106d857806319fa8f50146106ed5780631f2698ab1461073457806327f6c75a146107495780632c7a72f81461075e578063334ff632146107735780633ccfd60b146107885780634042b66f1461079d5780635027a916146107b2578063580c2ae9146107ca578063655ded03146107df5780636f2ddd93146107f7578063715018a61461080c57806373c9fbe214610821578063755f047b146108365780637aeedf2a1461084b5780638ada6b0f146108a55780638da5cb5b146108ba578063908ba648146108cf57806391c62b791461092857806397b150ca14610940578063993d77af146109615780639a33e300146109765780639a9e3fd81461098b5780639ec318bf146109a0578063a3a8fd2c146109b5578063abb5ca0914610a0e578063b5545a3c14610a23578063bef4876b14610a38578063c2507ac114610a4d578063c80ec52214610a65578063cdd5fce514610a7a578063cf7c2b3114610cce578063d04be2da14610cef578063dea53c2014610d04578063f2fde38b14610d19578063fbf964eb14610d3a578063fc0c546a14610d4f575b6000806000600260149054906101000a900460ff16151561022b57600080fd5b610233610d64565b1561023d57600080fd5b610245610e41565b151561025057600080fd5b61025934610f1d565b151561026457600080fd5b3392506102718334611009565b61027a34611135565b91506102868383611231565b610290838361127a565b905061029c8183611363565b15156102a757600080fd5b60408051348152602081018490528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050005b3480156102fb57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506114419650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038257818101518382015260200161036a565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c957600080fd5b506103f47bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166115aa565b604080519115158252519081900360200190f35b34801561041457600080fd5b506103486115de565b34801561042957600080fd5b5061043261166c565b60408051918252519081900360200190f35b34801561045057600080fd5b506103f4611673565b34801561046557600080fd5b506104716004356117ae565b60408051600160a060020a039092168252519081900360200190f35b34801561049957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506117da9650505050505050565b005b3480156106e457600080fd5b506103f46118c7565b3480156106f957600080fd5b506107026118d7565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561074057600080fd5b506103f4610e41565b34801561075557600080fd5b506107026118fb565b34801561076a57600080fd5b5061034861191f565b34801561077f57600080fd5b5061043261197a565b34801561079457600080fd5b506103f4611980565b3480156107a957600080fd5b50610432611a29565b3480156107be57600080fd5b50610471600435611a2f565b3480156107d657600080fd5b50610432611a40565b3480156107eb57600080fd5b506103f4600435610f1d565b34801561080357600080fd5b50610471611a46565b34801561081857600080fd5b506106d6611a55565b34801561082d57600080fd5b50610348611ac1565b34801561084257600080fd5b50610348611b1c565b60408051602060046024803582810135601f81018590048502860185019096528585526106d6958335600160a060020a0316953695604494919390910191908190840183828082843750949750611b779650505050505050565b3480156108b157600080fd5b50610471611eea565b3480156108c657600080fd5b50610471611f02565b3480156108db57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610348943694929360249392840191908190840183828082843750949750611f119650505050505050565b34801561093457600080fd5b50610471600435611f9e565b34801561094c57600080fd5b50610432600160a060020a0360043516611faf565b34801561096d57600080fd5b50610348611fca565b34801561098257600080fd5b50610348612025565b34801561099757600080fd5b506103f4612080565b3480156109ac57600080fd5b50610348612154565b3480156109c157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506121af9650505050505050565b348015610a1a57600080fd5b5061034861223c565b348015610a2f57600080fd5b506103f4612297565b348015610a4457600080fd5b506103f4610d64565b348015610a5957600080fd5b50610432600435611135565b348015610a7157600080fd5b506103f461233b565b348015610a8657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a0316935061234492505050565b348015610cda57600080fd5b50610432600160a060020a036004351661238d565b348015610cfb57600080fd5b506107026123a8565b348015610d1057600080fd5b506103486123cc565b348015610d2557600080fd5b506106d6600160a060020a0360043516612427565b348015610d4657600080fd5b5061070261244a565b348015610d5b57600080fd5b5061047161246e565b6000806000610d71610e41565b1515610d805760009250610e3c565b5060009050805b600f54811015610e38578180610e2e5750600f805482908110610da657fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506040513d6020811015610e2b57600080fd5b50515b9150600101610d87565b8192505b505090565b6000806000600260149054906101000a900460ff161515610e655760009250610e3c565b5060009050805b600f54811015610e38578180610f135750600f805482908110610e8b57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316631f2698ab6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d6020811015610f1057600080fd5b50515b9150600101610e6c565b6000600181805b600f54821015610ffd57600f805483908110610f3c57fe5b600091825260209091200154600160a060020a03169050828015610ff05750604080517f4f9a82d6000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a03831691634f9a82d69160448083019260209291908290030181600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d6020811015610fed57600080fd5b50515b9250600190910190610f24565b8293505b505050919050565b6000611013610d64565b1561101d57600080fd5b611025610e41565b151561103057600080fd5b600160a060020a038316600090815260106020526040902054611059908363ffffffff61247d16565b600160a060020a038416600090815260106020526040902055600c54611085908363ffffffff61247d16565b600c555060005b6011548110156110d75782600160a060020a03166011828154811015156110af57fe5b600091825260209091200154600160a060020a031614156110cf57611130565b60010161108c565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b505050565b60008080805b600f5483101561122657600f80548490811061115357fe5b6000918252602080832090910154604080517f5589530e000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051600160a060020a0390921695508593635589530e9360448084019491939192918390030190829087803b1580156111cd57600080fd5b505af11580156111e1573d6000803e3d6000fd5b505050506040513d60208110156111f757600080fd5b50519050600081111561121b57611214858263ffffffff61249016565b9350611001565b60019092019161113b565b506000949350505050565b600160a060020a03821660009081526012602052604090205461125a908263ffffffff61247d16565b600160a060020a0390921660009081526012602052604090209190915550565b600080805b600f5482101561135757600f80548390811061129757fe5b6000918252602080832090910154604080517fe67c8646000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363e67c864693604480850194919392918390030190829087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50511561134c5780925061135b565b60019091019061127f565b8492505b505092915050565b600080805b600f5482101561122657600f80548390811061138057fe5b6000918252602080832090910154604080517f587775e8000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363587775e893604480850194919392918390030190829087803b1580156113fc57600080fd5b505af1158015611410573d6000803e3d6000fd5b505050506040513d602081101561142657600080fd5b505115611436576001925061135b565b600190910190611368565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363bf3bed549387939092918291606490910190602086019080838360005b838110156114cf5781810151838201526020016114b7565b50505050905090810190601f1680156114fc5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561151c57600080fd5b505af1158015611530573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561155957600080fd5b81019080805164010000000081111561157157600080fd5b8201602081018481111561158457600080fd5b815164010000000081118282018710171561159e57600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b505050505081565b600e545b90565b6000805481908190600160a060020a0316331461168f57600080fd5b600091505b600e5482101561179f57600e8054839081106116ac57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905080600160a060020a031663186601ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b50511561179457600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b600190910190611694565b6117a76124b9565b9250505090565b6000600e828154811015156117bf57fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a031633146117f157600080fd5b60025460a060020a900460ff161561180857600080fd5b885161181b9060039060208c019061263f565b50875161182f9060049060208b019061263f565b5086516118439060059060208a019061263f565b50855161185790600690602089019061263f565b50845161186b90600790602088019061263f565b50835161187f90600890602087019061263f565b50825161189390600990602086019061263f565b5081516118a790600a90602085019061263f565b5080516118bb90600b90602084019061263f565b50505050505050505050565b60025460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b7f90e2f4940000000000000000000000000000000000000000000000000000000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600f5490565b60008054600160a060020a0316331461199857600080fd5b60025460a060020a900460ff1615156119b057600080fd5b600d5460ff16156119c057600080fd5b6119c8610d64565b15156119d357600080fd5b6119db612080565b15156119e657600080fd5b600d805460ff19166001179055600c54604051339180156108fc02916000818181858888f19350505050158015611a21573d6000803e3d6000fd5b506001905090565b600c5481565b6000600f828154811015156117bf57fe5b60115490565b600254600160a060020a031681565b600054600160a060020a03163314611a6c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6000805460609190600160a060020a03163314611b9357600080fd5b60025460a060020a900460ff1615611baa57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000080825260048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d6020811015611c3557600080fd5b50511515611c4257600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b505050506040513d6020811015611ced57600080fd5b50511515611cfa57600080fd5b611d03846124e2565b1515611d0e57600080fd5b60408051336020808301919091523082840152825180830384018152606083018085527f6535b4a500000000000000000000000000000000000000000000000000000000905260648301938452865160a48401528651909550600160a060020a03881693636535b4a593349389938993928392608482019260c4909201919087019080838360005b83811015611dae578181015183820152602001611d96565b50505050905090810190601f168015611ddb5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611e0e578181015183820152602001611df6565b50505050905090810190601f168015611e3b5780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50505050506040513d6020811015611e8657600080fd5b5051600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550505050565b735f5f455243323053616c6552656e64657265725f81565b600054600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363e77cee3d938793909291829160649091019060208601908083836000838110156114cf5781810151838201526020016114b7565b60006011828154811015156117bf57fe5b600160a060020a031660009081526012602052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600080600061208d610e41565b151561209c5760009250610e3c565b5060009050805b600f54811015610e3857818061214a5750600f8054829081106120c257fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316639a9e3fd86040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561211d57600080fd5b505af1158015612131573d6000803e3d6000fd5b505050506040513d602081101561214757600080fd5b50515b91506001016120a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363e9499555938793909291829160649091019060208601908083836000838110156114cf5781810151838201526020016114b7565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600254600090819060a060020a900460ff1615156122b457600080fd5b6122bc610d64565b15156122c757600080fd5b6122cf612080565b156122d957600080fd5b50336000908152601060205260408120549081116122f657600080fd5b336000818152601060205260408082208290555183156108fc0291849190818181858888f19350505050158015612331573d6000803e3d6000fd5b50600191505b5090565b600d5460ff1681565b6123558a8a8a8a8a8a8a8a8a6117da565b6013805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055505050505050505050565b600160a060020a031660009081526010602052604090205490565b7f5efbb0220000000000000000000000000000000000000000000000000000000081565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600054600160a060020a0316331461243e57600080fd5b612447816125c2565b50565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b601354600160a060020a031681565b8181018281101561248a57fe5b92915050565b60008215156124a15750600061248a565b508181028183828115156124b157fe5b041461248a57fe5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600080805b600e548210156125b657600e8054839081106124ff57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905083600160a060020a031681600160a060020a0316636f2ddd936040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050506040513d602081101561259157600080fd5b5051600160a060020a031614156125ab57600092506125bb565b6001909101906124e7565b600192505b5050919050565b600160a060020a03811615156125d757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061268057805160ff19168380011785556126ad565b828001600101855582156126ad579182015b828111156126ad578251825591602001919060010190612692565b50612337926116709250905b8082111561233757600081556001016126b95600a165627a7a7230582042a0b28d86ef3799fd286d9d5386b2029a79a44bed5f3b694e9e9390612a19620029",
  "deployedBytecode": "0x60806040526004361061020b5763ffffffff60e060020a60003504166301bd341181146102ef57806301ffc9a7146103bd57806306fdde03146104085780630956e5a61461041d5780630f15f4c0146104445780630fc8c0b614610459578063184efbb01461048d578063186601ca146106d857806319fa8f50146106ed5780631f2698ab1461073457806327f6c75a146107495780632c7a72f81461075e578063334ff632146107735780633ccfd60b146107885780634042b66f1461079d5780635027a916146107b2578063580c2ae9146107ca578063655ded03146107df5780636f2ddd93146107f7578063715018a61461080c57806373c9fbe214610821578063755f047b146108365780637aeedf2a1461084b5780638ada6b0f146108a55780638da5cb5b146108ba578063908ba648146108cf57806391c62b791461092857806397b150ca14610940578063993d77af146109615780639a33e300146109765780639a9e3fd81461098b5780639ec318bf146109a0578063a3a8fd2c146109b5578063abb5ca0914610a0e578063b5545a3c14610a23578063bef4876b14610a38578063c2507ac114610a4d578063c80ec52214610a65578063cdd5fce514610a7a578063cf7c2b3114610cce578063d04be2da14610cef578063dea53c2014610d04578063f2fde38b14610d19578063fbf964eb14610d3a578063fc0c546a14610d4f575b6000806000600260149054906101000a900460ff16151561022b57600080fd5b610233610d64565b1561023d57600080fd5b610245610e41565b151561025057600080fd5b61025934610f1d565b151561026457600080fd5b3392506102718334611009565b61027a34611135565b91506102868383611231565b610290838361127a565b905061029c8183611363565b15156102a757600080fd5b60408051348152602081018490528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050005b3480156102fb57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506114419650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038257818101518382015260200161036a565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c957600080fd5b506103f47bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166115aa565b604080519115158252519081900360200190f35b34801561041457600080fd5b506103486115de565b34801561042957600080fd5b5061043261166c565b60408051918252519081900360200190f35b34801561045057600080fd5b506103f4611673565b34801561046557600080fd5b506104716004356117ae565b60408051600160a060020a039092168252519081900360200190f35b34801561049957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506117da9650505050505050565b005b3480156106e457600080fd5b506103f46118c7565b3480156106f957600080fd5b506107026118d7565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561074057600080fd5b506103f4610e41565b34801561075557600080fd5b506107026118fb565b34801561076a57600080fd5b5061034861191f565b34801561077f57600080fd5b5061043261197a565b34801561079457600080fd5b506103f4611980565b3480156107a957600080fd5b50610432611a29565b3480156107be57600080fd5b50610471600435611a2f565b3480156107d657600080fd5b50610432611a40565b3480156107eb57600080fd5b506103f4600435610f1d565b34801561080357600080fd5b50610471611a46565b34801561081857600080fd5b506106d6611a55565b34801561082d57600080fd5b50610348611ac1565b34801561084257600080fd5b50610348611b1c565b60408051602060046024803582810135601f81018590048502860185019096528585526106d6958335600160a060020a0316953695604494919390910191908190840183828082843750949750611b779650505050505050565b3480156108b157600080fd5b50610471611eea565b3480156108c657600080fd5b50610471611f02565b3480156108db57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610348943694929360249392840191908190840183828082843750949750611f119650505050505050565b34801561093457600080fd5b50610471600435611f9e565b34801561094c57600080fd5b50610432600160a060020a0360043516611faf565b34801561096d57600080fd5b50610348611fca565b34801561098257600080fd5b50610348612025565b34801561099757600080fd5b506103f4612080565b3480156109ac57600080fd5b50610348612154565b3480156109c157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506121af9650505050505050565b348015610a1a57600080fd5b5061034861223c565b348015610a2f57600080fd5b506103f4612297565b348015610a4457600080fd5b506103f4610d64565b348015610a5957600080fd5b50610432600435611135565b348015610a7157600080fd5b506103f461233b565b348015610a8657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a0316935061234492505050565b348015610cda57600080fd5b50610432600160a060020a036004351661238d565b348015610cfb57600080fd5b506107026123a8565b348015610d1057600080fd5b506103486123cc565b348015610d2557600080fd5b506106d6600160a060020a0360043516612427565b348015610d4657600080fd5b5061070261244a565b348015610d5b57600080fd5b5061047161246e565b6000806000610d71610e41565b1515610d805760009250610e3c565b5060009050805b600f54811015610e38578180610e2e5750600f805482908110610da657fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506040513d6020811015610e2b57600080fd5b50515b9150600101610d87565b8192505b505090565b6000806000600260149054906101000a900460ff161515610e655760009250610e3c565b5060009050805b600f54811015610e38578180610f135750600f805482908110610e8b57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316631f2698ab6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d6020811015610f1057600080fd5b50515b9150600101610e6c565b6000600181805b600f54821015610ffd57600f805483908110610f3c57fe5b600091825260209091200154600160a060020a03169050828015610ff05750604080517f4f9a82d6000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a03831691634f9a82d69160448083019260209291908290030181600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d6020811015610fed57600080fd5b50515b9250600190910190610f24565b8293505b505050919050565b6000611013610d64565b1561101d57600080fd5b611025610e41565b151561103057600080fd5b600160a060020a038316600090815260106020526040902054611059908363ffffffff61247d16565b600160a060020a038416600090815260106020526040902055600c54611085908363ffffffff61247d16565b600c555060005b6011548110156110d75782600160a060020a03166011828154811015156110af57fe5b600091825260209091200154600160a060020a031614156110cf57611130565b60010161108c565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b505050565b60008080805b600f5483101561122657600f80548490811061115357fe5b6000918252602080832090910154604080517f5589530e000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051600160a060020a0390921695508593635589530e9360448084019491939192918390030190829087803b1580156111cd57600080fd5b505af11580156111e1573d6000803e3d6000fd5b505050506040513d60208110156111f757600080fd5b50519050600081111561121b57611214858263ffffffff61249016565b9350611001565b60019092019161113b565b506000949350505050565b600160a060020a03821660009081526012602052604090205461125a908263ffffffff61247d16565b600160a060020a0390921660009081526012602052604090209190915550565b600080805b600f5482101561135757600f80548390811061129757fe5b6000918252602080832090910154604080517fe67c8646000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363e67c864693604480850194919392918390030190829087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50511561134c5780925061135b565b60019091019061127f565b8492505b505092915050565b600080805b600f5482101561122657600f80548390811061138057fe5b6000918252602080832090910154604080517f587775e8000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363587775e893604480850194919392918390030190829087803b1580156113fc57600080fd5b505af1158015611410573d6000803e3d6000fd5b505050506040513d602081101561142657600080fd5b505115611436576001925061135b565b600190910190611368565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363bf3bed549387939092918291606490910190602086019080838360005b838110156114cf5781810151838201526020016114b7565b50505050905090810190601f1680156114fc5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561151c57600080fd5b505af1158015611530573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561155957600080fd5b81019080805164010000000081111561157157600080fd5b8201602081018481111561158457600080fd5b815164010000000081118282018710171561159e57600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b505050505081565b600e545b90565b6000805481908190600160a060020a0316331461168f57600080fd5b600091505b600e5482101561179f57600e8054839081106116ac57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905080600160a060020a031663186601ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b50511561179457600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b600190910190611694565b6117a76124b9565b9250505090565b6000600e828154811015156117bf57fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a031633146117f157600080fd5b60025460a060020a900460ff161561180857600080fd5b885161181b9060039060208c019061263f565b50875161182f9060049060208b019061263f565b5086516118439060059060208a019061263f565b50855161185790600690602089019061263f565b50845161186b90600790602088019061263f565b50835161187f90600890602087019061263f565b50825161189390600990602086019061263f565b5081516118a790600a90602085019061263f565b5080516118bb90600b90602084019061263f565b50505050505050505050565b60025460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b7f90e2f4940000000000000000000000000000000000000000000000000000000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600f5490565b60008054600160a060020a0316331461199857600080fd5b60025460a060020a900460ff1615156119b057600080fd5b600d5460ff16156119c057600080fd5b6119c8610d64565b15156119d357600080fd5b6119db612080565b15156119e657600080fd5b600d805460ff19166001179055600c54604051339180156108fc02916000818181858888f19350505050158015611a21573d6000803e3d6000fd5b506001905090565b600c5481565b6000600f828154811015156117bf57fe5b60115490565b600254600160a060020a031681565b600054600160a060020a03163314611a6c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6000805460609190600160a060020a03163314611b9357600080fd5b60025460a060020a900460ff1615611baa57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000080825260048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d6020811015611c3557600080fd5b50511515611c4257600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b505050506040513d6020811015611ced57600080fd5b50511515611cfa57600080fd5b611d03846124e2565b1515611d0e57600080fd5b60408051336020808301919091523082840152825180830384018152606083018085527f6535b4a500000000000000000000000000000000000000000000000000000000905260648301938452865160a48401528651909550600160a060020a03881693636535b4a593349389938993928392608482019260c4909201919087019080838360005b83811015611dae578181015183820152602001611d96565b50505050905090810190601f168015611ddb5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611e0e578181015183820152602001611df6565b50505050905090810190601f168015611e3b5780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50505050506040513d6020811015611e8657600080fd5b5051600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550505050565b735f5f455243323053616c6552656e64657265725f81565b600054600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363e77cee3d938793909291829160649091019060208601908083836000838110156114cf5781810151838201526020016114b7565b60006011828154811015156117bf57fe5b600160a060020a031660009081526012602052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600080600061208d610e41565b151561209c5760009250610e3c565b5060009050805b600f54811015610e3857818061214a5750600f8054829081106120c257fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316639a9e3fd86040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561211d57600080fd5b505af1158015612131573d6000803e3d6000fd5b505050506040513d602081101561214757600080fd5b50515b91506001016120a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363e9499555938793909291829160649091019060208601908083836000838110156114cf5781810151838201526020016114b7565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600254600090819060a060020a900460ff1615156122b457600080fd5b6122bc610d64565b15156122c757600080fd5b6122cf612080565b156122d957600080fd5b50336000908152601060205260408120549081116122f657600080fd5b336000818152601060205260408082208290555183156108fc0291849190818181858888f19350505050158015612331573d6000803e3d6000fd5b50600191505b5090565b600d5460ff1681565b6123558a8a8a8a8a8a8a8a8a6117da565b6013805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055505050505050505050565b600160a060020a031660009081526010602052604090205490565b7f5efbb0220000000000000000000000000000000000000000000000000000000081565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600054600160a060020a0316331461243e57600080fd5b612447816125c2565b50565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b601354600160a060020a031681565b8181018281101561248a57fe5b92915050565b60008215156124a15750600061248a565b508181028183828115156124b157fe5b041461248a57fe5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600080805b600e548210156125b657600e8054839081106124ff57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905083600160a060020a031681600160a060020a0316636f2ddd936040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050506040513d602081101561259157600080fd5b5051600160a060020a031614156125ab57600092506125bb565b6001909101906124e7565b600192505b5050919050565b600160a060020a03811615156125d757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061268057805160ff19168380011785556126ad565b828001600101855582156126ad579182015b828111156126ad578251825591602001919060010190612692565b50612337926116709250905b8082111561233757600081556001016126b95600a165627a7a7230582042a0b28d86ef3799fd286d9d5386b2029a79a44bed5f3b694e9e9390612a19620029",
  "sourceMap": "156:766:1:-;;;327:176;8:9:-1;5:2;;;30:1;27;20:12;5:2;327:176:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;567:5:27;:18;;-1:-1:-1;;;;;;567:18:27;575:10;567:18;;;327:176:1;;;;;;;;;;;;;;;;649:38:25;668:18;649;;;;:38;:::i;:::-;-1:-1:-1;;;;;568:20:7;;;;560:29;;;;;;600:8;:31;;620:10;-1:-1:-1;;;;;;600:31:7;;;;;;;-1:-1:-1;641:14:7;;;;;-1:-1:-1;;;;;641:14:7;;;;;666:40;685:20;666:18;;;;:40;:::i;:::-;-1:-1:-1;1972:26:8;;;;:11;;:26;;;;;:::i;:::-;-1:-1:-1;2008:12:8;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;2031:36:8;2050:16;2031:18;;;;:36;:::i;:::-;-1:-1:-1;;;;;;;;2045:20:0;;;;2037:29;;;;;;2077:5;:14;;-1:-1:-1;;;;;;2077:14:0;-1:-1:-1;;;;;2077:14:0;;;;;2102:41;2121:21;2102:18;;;;:41;:::i;:::-;1871:279;;;;327:176:1;;;;156:766;;987:156:25;1065:26;;;;;;1057:35;;;;;;1098:33;;;;;;1134:4;1098:33;;;;;;;;:40;;-1:-1:-1;;1098:40:25;;;;;;987:156::o;156:766:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;156:766:1;;;-1:-1:-1;156:766:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "156:766:1:-;;;;;;;;;-1:-1:-1;;;156:766:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3058:17:0;3148:19;3258:21;122:9:6;;;;;;;;;;;114:18;;;;;;;;2967:10:0;:8;:10::i;:::-;2966:11;2958:20;;;;;;2996:9;:7;:9::i;:::-;2988:18;;;;;;;;3024:22;3036:9;3024:11;:22::i;:::-;3016:31;;;;;;;;3078:10;3058:30;;3098:39;3116:9;3127;3098:17;:39::i;:::-;3170:25;3185:9;3170:14;:25::i;:::-;3148:47;;3205:42;3224:9;3235:11;3205:18;:42::i;:::-;3282:38;3297:9;3308:11;3282:14;:38::i;:::-;3258:62;;3338:41;3352:13;3367:11;3338:13;:41::i;:::-;3330:50;;;;;;;;3396:48;;;3421:9;3396:48;;;;;;;;;;-1:-1:-1;;;;;3396:48:0;;;;;;;;;;;2906:545;;;156:766:1;795:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:125:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:125:1;;-1:-1:-1;795:125:1;;-1:-1:-1;;;;;;;795:125:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;795:125:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;775:142:25;-1:-1:-1;;775:142:25;;;;;;;;;;;;;;;;;;;;;;;1612:18:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1612:18:8;;;;3639:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3639:101:8;;;;;;;;;;;;;;;;;;;;4113:314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4113:314:8;;;;3746:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3746:106:8;;;;;;;;;-1:-1:-1;;;;;3746:106:8;;;;;;;;;;;;;;2080:645;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;;2080:645:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2080:645:8;;;;-1:-1:-1;2080:645:8;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;;;;;;;-1:-1:-1;2080:645:8;;-1:-1:-1;2080:645:8;;-1:-1:-1;;;;;;;2080:645:8;;;53:21:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;53:21:6;;;;230:54:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:54:25;;;;;;;;-1:-1:-1;;230:54:25;;;;;;;;;;;;;;4433:263:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4433:263:8;;;;1603:57:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1603:57:0;;;;1551:27:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1551:27:8;;;;3858:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3858:119:8;;;;6112:251;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6112:251:8;;;;1637:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1637:24:8;;;;3983:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3983:124:8;;;;;5890:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5890:101:8;;;;3457:341:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3457:341:0;;;;;484:24:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;484:24:7;;;;1001:111:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:27;;;;1584:22:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1584:22:8;;;;1423:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1423:32:8;;;;2731:551;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2731:551:8;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2731:551:8;;-1:-1:-1;2731:551:8;;-1:-1:-1;;;;;;;2731:551:8;216:104:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:104:1;;;;238:20:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:27;;;;653:136:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;653:136:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;653:136:1;;-1:-1:-1;653:136:1;;-1:-1:-1;;;;;;;653:136:1;5997:109:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5997:109:8;;;;;2156:131:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2156:131:0;-1:-1:-1;;;;;2156:131:0;;;;;1461:21:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1461:21:8;;;;1358:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1358:25:8;;;;4702:268;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4702:268:8;;;;1389:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1389:28:8;;;;509:138:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;509:138:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;509:138:1;;-1:-1:-1;509:138:1;;-1:-1:-1;;;;;;;509:138:1;1521:24:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1521:24:8;;;;6369:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6369:318:8;;;;4976:264;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4976:264:8;;;;3804:415:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3804:415:0;;;;;1667:21:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1667:21:8;;;;2293:607:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;;2293:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2293:607:0;;;;-1:-1:-1;2293:607:0;-1:-1:-1;2293:607:0;;-1:-1:-1;2293:607:0;;;;;;;;-1:-1:-1;2293:607:0;;-1:-1:-1;;;2293:607:0;;-1:-1:-1;;;;;2293:607:0;;-1:-1:-1;2293:607:0;;-1:-1:-1;;;2293:607:0;5751:133:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5751:133:8;-1:-1:-1;;;;;5751:133:8;;;;;1299:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1299:52:8;;;;1488:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1488:27:8;;;;1274:103:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:27;-1:-1:-1;;;;;1274:103:27;;;;;421:56:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;421:56:7;;;;1846:18:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1846:18:0;;;;4976:264:8;5017:4;5071:6;5100;5037:9;:7;:9::i;:::-;5036:10;5032:28;;;5055:5;5048:12;;;;5032:28;-1:-1:-1;5080:5:8;;-1:-1:-1;5080:5:8;5095:121;5116:19;:26;5112:30;;5095:121;;;5167:1;:38;;;-1:-1:-1;5172:19:8;:22;;5192:1;;5172:22;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5172:22:8;-1:-1:-1;;;;;5172:31:8;;:33;;;;;-1:-1:-1;;;5172:33:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5172:33:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5172:33:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5172:33:8;5167:38;5163:42;-1:-1:-1;5144:3:8;;5095:121;;;5232:1;5225:8;;4976:264;;;;:::o;4433:263::-;4473:4;4528:6;4557;4494:9;;;;;;;;;;;4493:10;4489:28;;;4512:5;4505:12;;;;4489:28;-1:-1:-1;4537:5:8;;-1:-1:-1;4537:5:8;4552:120;4573:19;:26;4569:30;;4552:120;;;4624:1;:37;;;-1:-1:-1;4629:19:8;:22;;4649:1;;4629:22;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4629:22:8;-1:-1:-1;;;;;4629:30:8;;:32;;;;;-1:-1:-1;;;4629:32:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4629:32:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4629:32:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4629:32:8;4624:37;4620:41;-1:-1:-1;4601:3:8;;4552:120;;3457:341:0;3519:4;3544;3519;;3558:216;3579:19;:26;3575:30;;3558:216;;;3673:19;:22;;3693:1;;3673:22;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3673:22:0;;-1:-1:-1;3714:1:0;:49;;;;-1:-1:-1;3719:44:0;;;;;;3740:10;3719:44;;;;;;;;;;;;-1:-1:-1;;;;;3719:20:0;;;;;:44;;;;;;;;;;;;;;-1:-1:-1;3719:20:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;3719:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3719:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3719:44:0;3714:49;3710:53;-1:-1:-1;3607:3:0;;;;;3558:216;;;3790:1;3783:8;;3457:341;;;;;;;:::o;5280:465:8:-;5566:6;5375:10;:8;:10::i;:::-;5374:11;5366:20;;;;;;5404:9;:7;:9::i;:::-;5396:18;;;;;;;;-1:-1:-1;;;;;5458:30:8;;;;;;:18;:30;;;;;;:46;;5493:10;5458:46;:34;:46;:::i;:::-;-1:-1:-1;;;;;5425:30:8;;;;;;:18;:30;;;;;:79;5526:9;;:25;;5540:10;5526:25;:13;:25;:::i;:::-;5514:9;:37;-1:-1:-1;5575:1:8;5561:141;5582:10;:17;5578:21;;5561:141;;;5641:10;-1:-1:-1;;;;;5624:27:8;:10;5635:1;5624:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5624:13:8;:27;5620:72;;;5671:7;;5620:72;5601:3;;5561:141;;;5711:10;27::-1;;39:1;23:18;;45:23;;-1:-1;5711:27:8;;;;;;;;-1:-1:-1;;5711:27:8;-1:-1:-1;;;;;5711:27:8;;;;;5280:465;;;;:::o;3804:415:0:-;3869:7;;;;3888:307;3909:19;:26;3905:30;;3888:307;;;4003:19;:22;;4023:1;;4003:22;;;;;;;;;;;;;;;;;;4055:42;;;;;;4074:10;4055:42;;;;;;;;;;;;-1:-1:-1;;;;;4003:22:0;;;;-1:-1:-1;4003:22:0;;4055:18;;:42;;;;;4003:22;;4055:42;;;;;;;;;;4003:22;4055:42;;;5:2:-1;;;;30:1;27;20:12;5:2;4055:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4055:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4055:42:0;;-1:-1:-1;4122:1:0;4115:8;;4111:74;;;4150:20;:10;4165:4;4150:20;:14;:20;:::i;:::-;4143:27;;;;4111:74;3937:3;;;;;3888:307;;;-1:-1:-1;4211:1:0;;3804:415;-1:-1:-1;;;;3804:415:0:o;4225:184::-;-1:-1:-1;;;;;4350:34:0;;;;;;:22;:34;;;;;;:52;;4389:12;4350:52;:38;:52;:::i;:::-;-1:-1:-1;;;;;4313:34:0;;;;;;;:22;:34;;;;;:89;;;;-1:-1:-1;4225:184:0:o;4415:409::-;4498:7;;;4517:274;4538:19;:26;4534:30;;4517:274;;;4632:19;:22;;4652:1;;4632:22;;;;;;;;;;;;;;;;;;4673:49;;;;;;-1:-1:-1;;;;;4673:49:0;;;;;;;;;;;;;;;4632:22;;;;;-1:-1:-1;4632:22:0;;4673:23;;:49;;;;;4632:22;;4673:49;;;;;;;;;4632:22;4673:49;;;5:2:-1;;;;30:1;27;20:12;5:2;4673:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4673:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4673:49:0;4669:112;;;4757:8;4742:24;;;;4669:112;4566:3;;;;;4517:274;;;4807:10;4800:17;;4415:409;;;;;;;:::o;4830:371::-;4905:4;;;4921:252;4942:19;:26;4938:30;;4921:252;;;5036:19;:22;;5056:1;;5036:22;;;;;;;;;;;;;;;;;;5077:40;;;;;;-1:-1:-1;;;;;5077:40:0;;;;;;;;;;;;;;;5036:22;;;;;-1:-1:-1;5036:22:0;;5077:21;;:40;;;;;5036:22;;5077:40;;;;;;;;;5036:22;5077:40;;;5:2:-1;;;;30:1;27;20:12;5:2;5077:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5077:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5077:40:0;5073:90;;;5144:4;5137:11;;;;5073:90;4970:3;;;;;4921:252;;795:125:1;883:30;;;;;;908:4;883:30;;;;;;;;;;;;;;;;;;;;848:16;;279:40;;883:15;;899:7;;908:4;;883:30;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;883:30:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;883:30:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;883:30:1;;;;;;39:16:-1;36:1;17:17;2:54;101:4;883:30:1;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;883:30:1;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;-1:-1;883:30:1;;795:125;-1:-1:-1;;;;;;795:125:1:o;775:142:25:-;-1:-1:-1;;879:33:25;858:4;879:33;;;:19;:33;;;;;;;;;775:142::o;1612:18:8:-;;;;;;;;;;;;;;;-1:-1:-1;;1612:18:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3639:101::-;3716:10;:17;3639:101;;:::o;4113:314::-;4159:4;719:5:27;;4159:4:8;;;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;4189:1:8;4180:10;;4175:213;4196:10;:17;4192:21;;4175:213;;;4258:10;:13;;4269:1;;4258:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4258:13:8;4234:37;;4289:8;-1:-1:-1;;;;;4289:18:8;;:20;;;;;-1:-1:-1;;;4289:20:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4289:20:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4289:20:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4289:20:8;4285:93;;;4329:19;27:10:-1;;39:1;23:18;;45:23;;-1:-1;4329:34:8;;;;;;;;-1:-1:-1;;4329:34:8;-1:-1:-1;;;;;4329:34:8;;;;;4285:93;4215:3;;;;;4175:213;;;4404:16;:14;:16::i;:::-;4397:23;;4113:314;;;:::o;3746:106::-;3802:7;3828:10;3839:5;3828:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3828:17:8;;3746:106;-1:-1:-1;;3746:106:8:o;2080:645::-;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;201:9:6;;-1:-1:-1;;;201:9:6;;;;200:10;192:19;;;;;;2406:26:8;;;;:11;;:26;;;;;:::i;:::-;-1:-1:-1;2442:32:8;;;;:14;;:32;;;;;:::i;:::-;-1:-1:-1;2484:40:8;;;;:18;;:40;;;;;:::i;:::-;-1:-1:-1;2534:18:8;;;;:7;;:18;;;;;:::i;:::-;-1:-1:-1;2562:30:8;;;;:13;;:30;;;;;:::i;:::-;-1:-1:-1;2602:24:8;;;;:10;;:24;;;;;:::i;:::-;-1:-1:-1;2636:30:8;;;;:13;;:30;;;;;:::i;:::-;-1:-1:-1;2676:20:8;;;;:8;;:20;;;;;:::i;:::-;-1:-1:-1;2706:12:8;;;;:4;;:12;;;;;:::i;:::-;;2080:645;;;;;;;;;:::o;53:21:6:-;;;-1:-1:-1;;;53:21:6;;;;;:::o;230:54:25:-;;;:::o;1603:57:0:-;;;:::o;1551:27:8:-;;;;;;;;;;;;;;;-1:-1:-1;;1551:27:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3858:119;3944:19;:26;3858:119;:::o;6112:251::-;6172:4;719:5:27;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;122:9:6;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;6197:9:8;;;;6196:10;6188:19;;;;;;6225:10;:8;:10::i;:::-;6217:19;;;;;;;;6254:12;:10;:12::i;:::-;6246:21;;;;;;;;6278:9;:16;;-1:-1:-1;;6278:16:8;6290:4;6278:16;;;6324:9;;6304:30;;:10;;:30;;;;;6278:9;6304:30;6278:9;6304:30;6324:9;6304:10;:30;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6304:30:8;6352:4;6345:11;;6112:251;:::o;1637:24::-;;;;:::o;3983:124::-;4048:7;4074:19;4094:5;4074:26;;;;;;;;;5890:101;5967:10;:17;5890:101;:::o;484:24:7:-;;;-1:-1:-1;;;;;484:24:7;;:::o;1001:111:27:-;719:5;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;1077:5;;;1058:25;;-1:-1:-1;;;;;1077:5:27;;;;1058:25;;;1105:1;1089:18;;-1:-1:-1;;1089:18:27;;;1001:111::o;1584:22:8:-;;;;;;;;;;;;;;;-1:-1:-1;;1584:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1423:32;;;;;;;;;;;;;;;-1:-1:-1;;1423:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2731:551;3147:21;719:5:27;;3080:17:8;;3147:21;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;201:9:6;;-1:-1:-1;;;201:9:6;;;;200:10;192:19;;;;;;2891:39:8;;;;;;;;;;;;;-1:-1:-1;;;;;2891:27:8;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;2891:27:8;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2891:39:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2891:39:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2891:39:8;2883:48;;;;;;;;2981:39;;;;;;;;;;;;;-1:-1:-1;;;;;2981:27:8;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;2981:27:8;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2981:39:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2981:39:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2981:39:8;2973:48;;;;;;;;3040:28;3058:9;3040:17;:28::i;:::-;3032:37;;;;;;;;3100;;;3111:10;3100:37;;;;;;;;3131:4;3100:37;;;;;;26:21:-1;;;22:32;;6:49;;3100:37:8;;;;;;3184:55;;;;;;;;;;;;;;;;;3100:37;;-1:-1:-1;;;;;;3184:21:8;;;;;3212:9;;3223;;3100:37;;3184:55;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3184:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3184:55:8;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3184:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3184:55:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3184:55:8;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3184:55:8;3250:10;27::-1;;39:1;23:18;;45:23;;-1:-1;3250:25:8;;;;;;;;-1:-1:-1;;3250:25:8;-1:-1:-1;;;;;3250:25:8;;;;;;;;;-1:-1:-1;;;;2731:551:8:o;216:104:1:-;279:40;216:104;:::o;238:20:27:-;;;-1:-1:-1;;;;;238:20:27;;:::o;653:136:1:-;747:35;;;;;;777:4;747:35;;;;;;;;;;;;;;;;;;;;711:17;;279:40;;747:20;;768:7;;777:4;;747:35;;;;;;;;;;;;;;;-1:-1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5997:109:8;6055:7;6081:10;6092:6;6081:18;;;;;;;;;2156:131:0;-1:-1:-1;;;;;2246:34:0;2220:7;2246:34;;;:22;:34;;;;;;;2156:131::o;1461:21:8:-;;;;;;;;;;;;;;;-1:-1:-1;;1461:21:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1358:25;;;;;;;;;;;;;;;-1:-1:-1;;1358:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4702:268;4745:4;4799:6;4828;4765:9;:7;:9::i;:::-;4764:10;4760:28;;;4783:5;4776:12;;;;4760:28;-1:-1:-1;4808:5:8;;-1:-1:-1;4808:5:8;4823:123;4844:19;:26;4840:30;;4823:123;;;4895:1;:40;;;-1:-1:-1;4900:19:8;:22;;4920:1;;4900:22;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4900:22:8;-1:-1:-1;;;;;4900:33:8;;:35;;;;;-1:-1:-1;;;4900:35:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4900:35:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4900:35:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4900:35:8;4895:40;4891:44;-1:-1:-1;4872:3:8;;4823:123;;1389:28;;;;;;;;;;;;;;;-1:-1:-1;;1389:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:138:1;604:36;;;;;;635:4;604:36;;;;;;;;;;;;;;;;;;;;568:17;;279:40;;604:21;;626:7;;635:4;;604:36;;;;;;;;;;;;;;;-1:-1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1521:24:8;;;;;;;;;;;;;;;-1:-1:-1;;1521:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6369:318;122:9:6;;6422:4:8;;;;-1:-1:-1;;;122:9:6;;;;114:18;;;;;;;;6446:10:8;:8;:10::i;:::-;6438:19;;;;;;;;6476:12;:10;:12::i;:::-;6475:13;6467:22;;;;;;-1:-1:-1;6536:10:8;6517:30;;;;:18;:30;;;;;;;6565:10;;6557:19;;;;;;6606:10;6620:1;6587:30;;;:18;:30;;;;;;:34;;;6631:27;;;;;;6651:6;;6631:27;;6620:1;6631:27;6651:6;6606:10;6631:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6631:27:8;6676:4;6669:11;;142:1:6;6369:318:8;;:::o;1667:21::-;;;;;;:::o;2293:607:0:-;2614:255;2640:12;2666:15;2695:19;2728:8;2750:14;2778:11;2803:14;2831:9;2854:5;2614:12;:255::i;:::-;2879:5;:14;;-1:-1:-1;;2879:14:0;-1:-1:-1;;;;;2879:14:0;;;;;;;;;;-1:-1:-1;;;;;;;;;2293:607:0:o;5751:133:8:-;-1:-1:-1;;;;;5847:30:8;5811:17;5847:30;;;:18;:30;;;;;;;5751:133::o;1299:52::-;;;:::o;1488:27::-;;;;;;;;;;;;;;;-1:-1:-1;;1488:27:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1274:103:27;719:5;;-1:-1:-1;;;;;719:5:27;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;:::-;1274:103;:::o;421:56:7:-;;;:::o;1846:18:0:-;;;-1:-1:-1;;;;;1846:18:0;;:::o;1238:128:26:-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o;203:380::-;263:9;489:7;;485:36;;;-1:-1:-1;513:1:26;506:8;;485:36;-1:-1:-1;531:7:26;;;536:2;531;:7;551:6;;;;;;;;:12;544:20;;;235:96:6;287:9;:16;;-1:-1:-1;;287:16:6;-1:-1:-1;;;287:16:6;;;299:4;235:96;:::o;3288:345:8:-;3369:4;;;3385:221;3406:10;:17;3402:21;;3385:221;;;3468:10;:13;;3479:1;;3468:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3468:13:8;3444:37;;3539:9;-1:-1:-1;;;;;3499:50:8;3507:8;-1:-1:-1;;;;;3507:17:8;;:19;;;;;-1:-1:-1;;;3507:19:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3507:19:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3507:19:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3507:19:8;-1:-1:-1;;;;;3499:50:8;;3495:101;;;3576:5;3569:12;;;;3495:101;3425:3;;;;;3385:221;;;3622:4;3615:11;;3288:345;;;;;;:::o;1512:171:27:-;-1:-1:-1;;;;;1582:23:27;;;;1574:32;;;;;;1638:5;;;1617:38;;-1:-1:-1;;;;;1617:38:27;;;;1638:5;;;1617:38;;;1661:5;:17;;-1:-1:-1;;1661:17:27;-1:-1:-1;;;;;1661:17:27;;;;;;;;;;1512:171::o;156:766:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;156:766:1;;;;-1:-1:-1;156:766:1;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"tokenboost-solidity/contracts/widget/Renderable.sol\";\nimport \"./ERC20Sale.sol\";\nimport \"./widget/ERC20SaleRenderer.sol\";\n\ncontract RenderableERC20Sale is ERC20Sale, Renderable {\n    ERC20SaleRenderer constant public renderer = ERC20SaleRenderer(address(bytes20(\"__ERC20SaleRenderer_\")));\n\n    constructor(\n        address _owner,\n        string _projectName,\n        string _name,\n        ERC20 _token\n    ) public ERC20Sale(_owner, _projectName, _name, _token) {\n    }\n\n    function adminWidgets(string _locale) public view returns (string jsonObject) {\n        return renderer.adminWidgets(_locale, this);\n    }\n\n    function userWidgets(string _locale) public view returns (string jsonObject) {\n        return renderer.userWidgets(_locale, this);\n    }\n\n    function inputs(string _locale) public view returns (string jsonArray) {\n        return renderer.inputs(_locale, this);\n    }\n}\n",
  "sourcePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/RenderableERC20Sale.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/RenderableERC20Sale.sol",
    "exportedSymbols": {
      "RenderableERC20Sale": [
        465
      ]
    },
    "id": 466,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 388,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:1"
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "file": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "id": 389,
        "nodeType": "ImportDirective",
        "scope": 466,
        "sourceUnit": 4783,
        "src": "26:61:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/ERC20Sale.sol",
        "file": "./ERC20Sale.sol",
        "id": 390,
        "nodeType": "ImportDirective",
        "scope": 466,
        "sourceUnit": 387,
        "src": "88:25:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/ERC20SaleRenderer.sol",
        "file": "./widget/ERC20SaleRenderer.sol",
        "id": 391,
        "nodeType": "ImportDirective",
        "scope": 466,
        "sourceUnit": 1156,
        "src": "114:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 392,
              "name": "ERC20Sale",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 386,
              "src": "188:9:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20Sale_$386",
                "typeString": "contract ERC20Sale"
              }
            },
            "id": 393,
            "nodeType": "InheritanceSpecifier",
            "src": "188:9:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 394,
              "name": "Renderable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4782,
              "src": "199:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Renderable_$4782",
                "typeString": "contract Renderable"
              }
            },
            "id": 395,
            "nodeType": "InheritanceSpecifier",
            "src": "199:10:1"
          }
        ],
        "contractDependencies": [
          386,
          1276,
          1320,
          1959,
          4782,
          5124,
          5175,
          5355
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 465,
        "linearizedBaseContracts": [
          465,
          4782,
          386,
          1959,
          1276,
          1320,
          5175,
          5124,
          5355
        ],
        "name": "RenderableERC20Sale",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 404,
            "name": "renderer",
            "nodeType": "VariableDeclaration",
            "scope": 465,
            "src": "216:104:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
              "typeString": "contract ERC20SaleRenderer"
            },
            "typeName": {
              "contractScope": null,
              "id": 396,
              "name": "ERC20SaleRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1155,
              "src": "216:17:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                "typeString": "contract ERC20SaleRenderer"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "5f5f455243323053616c6552656e64657265725f",
                          "id": 400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "295:22:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5e9b98352eaf3107f8dd5b71062e31fecdecf6a210ec70daea3006d0fd819976",
                            "typeString": "literal_string \"__ERC20SaleRenderer_\""
                          },
                          "value": "__ERC20SaleRenderer_"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_5e9b98352eaf3107f8dd5b71062e31fecdecf6a210ec70daea3006d0fd819976",
                            "typeString": "literal_string \"__ERC20SaleRenderer_\""
                          }
                        ],
                        "id": 399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "287:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes20_$",
                          "typeString": "type(bytes20)"
                        },
                        "typeName": "bytes20"
                      },
                      "id": 401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "287:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    ],
                    "id": 398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "279:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": "address"
                  },
                  "id": 402,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "279:40:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 397,
                "name": "ERC20SaleRenderer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1155,
                "src": "261:17:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_ERC20SaleRenderer_$1155_$",
                  "typeString": "type(contract ERC20SaleRenderer)"
                }
              },
              "id": 403,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "261:59:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                "typeString": "contract ERC20SaleRenderer"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 421,
              "nodeType": "Block",
              "src": "496:7:1",
              "statements": []
            },
            "documentation": null,
            "id": 422,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 415,
                    "name": "_owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 406,
                    "src": "459:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 416,
                    "name": "_projectName",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 408,
                    "src": "467:12:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 417,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 410,
                    "src": "481:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 418,
                    "name": "_token",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 412,
                    "src": "488:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$5398",
                      "typeString": "contract ERC20"
                    }
                  }
                ],
                "id": 419,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 414,
                  "name": "ERC20Sale",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 386,
                  "src": "449:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC20Sale_$386_$",
                    "typeString": "type(contract ERC20Sale)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "449:46:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 406,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "348:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 405,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 408,
                  "name": "_projectName",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "372:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 407,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "372:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 410,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "401:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 409,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "401:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 412,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "423:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$5398",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 411,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5398,
                    "src": "423:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$5398",
                      "typeString": "contract ERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "338:103:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "496:0:1"
            },
            "scope": 465,
            "src": "327:176:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 435,
              "nodeType": "Block",
              "src": "587:60:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 431,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 424,
                        "src": "626:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 432,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5516,
                        "src": "635:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 429,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "604:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                          "typeString": "contract ERC20SaleRenderer"
                        }
                      },
                      "id": 430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "adminWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1027,
                      "src": "604:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Sale_$386_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Sale) view external returns (string memory)"
                      }
                    },
                    "id": 433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "604:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 428,
                  "id": 434,
                  "nodeType": "Return",
                  "src": "597:43:1"
                }
              ]
            },
            "documentation": null,
            "id": 436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "adminWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 424,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "531:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 423,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "530:16:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 427,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "568:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 426,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "568:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "567:19:1"
            },
            "scope": 465,
            "src": "509:138:1",
            "stateMutability": "view",
            "superFunction": 4767,
            "visibility": "public"
          },
          {
            "body": {
              "id": 449,
              "nodeType": "Block",
              "src": "730:59:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 445,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 438,
                        "src": "768:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 446,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5516,
                        "src": "777:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 443,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "747:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                          "typeString": "contract ERC20SaleRenderer"
                        }
                      },
                      "id": 444,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1043,
                      "src": "747:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Sale_$386_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Sale) view external returns (string memory)"
                      }
                    },
                    "id": 447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "747:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 442,
                  "id": 448,
                  "nodeType": "Return",
                  "src": "740:42:1"
                }
              ]
            },
            "documentation": null,
            "id": 450,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "userWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 438,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 450,
                  "src": "674:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 437,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "674:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "673:16:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 441,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 450,
                  "src": "711:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 440,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "711:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "710:19:1"
            },
            "scope": 465,
            "src": "653:136:1",
            "stateMutability": "view",
            "superFunction": 4774,
            "visibility": "public"
          },
          {
            "body": {
              "id": 463,
              "nodeType": "Block",
              "src": "866:54:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 459,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 452,
                        "src": "899:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 460,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5516,
                        "src": "908:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 457,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "883:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                          "typeString": "contract ERC20SaleRenderer"
                        }
                      },
                      "id": 458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inputs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1154,
                      "src": "883:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Sale_$386_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Sale) view external returns (string memory)"
                      }
                    },
                    "id": 461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "883:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 456,
                  "id": 462,
                  "nodeType": "Return",
                  "src": "876:37:1"
                }
              ]
            },
            "documentation": null,
            "id": 464,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "inputs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 452,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 464,
                  "src": "811:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 451,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "811:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "810:16:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 455,
                  "name": "jsonArray",
                  "nodeType": "VariableDeclaration",
                  "scope": 464,
                  "src": "848:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 454,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "848:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "847:18:1"
            },
            "scope": 465,
            "src": "795:125:1",
            "stateMutability": "view",
            "superFunction": 4781,
            "visibility": "public"
          }
        ],
        "scope": 466,
        "src": "156:766:1"
      }
    ],
    "src": "0:923:1"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/RenderableERC20Sale.sol",
    "exportedSymbols": {
      "RenderableERC20Sale": [
        465
      ]
    },
    "id": 466,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 388,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:1"
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "file": "tokenboost-solidity/contracts/widget/Renderable.sol",
        "id": 389,
        "nodeType": "ImportDirective",
        "scope": 466,
        "sourceUnit": 4783,
        "src": "26:61:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/ERC20Sale.sol",
        "file": "./ERC20Sale.sol",
        "id": 390,
        "nodeType": "ImportDirective",
        "scope": 466,
        "sourceUnit": 387,
        "src": "88:25:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/ERC20SaleRenderer.sol",
        "file": "./widget/ERC20SaleRenderer.sol",
        "id": 391,
        "nodeType": "ImportDirective",
        "scope": 466,
        "sourceUnit": 1156,
        "src": "114:40:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 392,
              "name": "ERC20Sale",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 386,
              "src": "188:9:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20Sale_$386",
                "typeString": "contract ERC20Sale"
              }
            },
            "id": 393,
            "nodeType": "InheritanceSpecifier",
            "src": "188:9:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 394,
              "name": "Renderable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4782,
              "src": "199:10:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Renderable_$4782",
                "typeString": "contract Renderable"
              }
            },
            "id": 395,
            "nodeType": "InheritanceSpecifier",
            "src": "199:10:1"
          }
        ],
        "contractDependencies": [
          386,
          1276,
          1320,
          1959,
          4782,
          5124,
          5175,
          5355
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 465,
        "linearizedBaseContracts": [
          465,
          4782,
          386,
          1959,
          1276,
          1320,
          5175,
          5124,
          5355
        ],
        "name": "RenderableERC20Sale",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 404,
            "name": "renderer",
            "nodeType": "VariableDeclaration",
            "scope": 465,
            "src": "216:104:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
              "typeString": "contract ERC20SaleRenderer"
            },
            "typeName": {
              "contractScope": null,
              "id": 396,
              "name": "ERC20SaleRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1155,
              "src": "216:17:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                "typeString": "contract ERC20SaleRenderer"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "5f5f455243323053616c6552656e64657265725f",
                          "id": 400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "295:22:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_5e9b98352eaf3107f8dd5b71062e31fecdecf6a210ec70daea3006d0fd819976",
                            "typeString": "literal_string \"__ERC20SaleRenderer_\""
                          },
                          "value": "__ERC20SaleRenderer_"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_stringliteral_5e9b98352eaf3107f8dd5b71062e31fecdecf6a210ec70daea3006d0fd819976",
                            "typeString": "literal_string \"__ERC20SaleRenderer_\""
                          }
                        ],
                        "id": 399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "287:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes20_$",
                          "typeString": "type(bytes20)"
                        },
                        "typeName": "bytes20"
                      },
                      "id": 401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "287:31:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes20",
                        "typeString": "bytes20"
                      }
                    ],
                    "id": 398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "279:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_address_$",
                      "typeString": "type(address)"
                    },
                    "typeName": "address"
                  },
                  "id": 402,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "279:40:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 397,
                "name": "ERC20SaleRenderer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 1155,
                "src": "261:17:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_contract$_ERC20SaleRenderer_$1155_$",
                  "typeString": "type(contract ERC20SaleRenderer)"
                }
              },
              "id": 403,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "261:59:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                "typeString": "contract ERC20SaleRenderer"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 421,
              "nodeType": "Block",
              "src": "496:7:1",
              "statements": []
            },
            "documentation": null,
            "id": 422,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 415,
                    "name": "_owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 406,
                    "src": "459:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 416,
                    "name": "_projectName",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 408,
                    "src": "467:12:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 417,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 410,
                    "src": "481:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 418,
                    "name": "_token",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 412,
                    "src": "488:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$5398",
                      "typeString": "contract ERC20"
                    }
                  }
                ],
                "id": 419,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 414,
                  "name": "ERC20Sale",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 386,
                  "src": "449:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC20Sale_$386_$",
                    "typeString": "type(contract ERC20Sale)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "449:46:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 406,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "348:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 405,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 408,
                  "name": "_projectName",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "372:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 407,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "372:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 410,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "401:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 409,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "401:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 412,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 422,
                  "src": "423:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$5398",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 411,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5398,
                    "src": "423:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$5398",
                      "typeString": "contract ERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "338:103:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "496:0:1"
            },
            "scope": 465,
            "src": "327:176:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 435,
              "nodeType": "Block",
              "src": "587:60:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 431,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 424,
                        "src": "626:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 432,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5516,
                        "src": "635:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 429,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "604:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                          "typeString": "contract ERC20SaleRenderer"
                        }
                      },
                      "id": 430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "adminWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1027,
                      "src": "604:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Sale_$386_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Sale) view external returns (string memory)"
                      }
                    },
                    "id": 433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "604:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 428,
                  "id": 434,
                  "nodeType": "Return",
                  "src": "597:43:1"
                }
              ]
            },
            "documentation": null,
            "id": 436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "adminWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 424,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "531:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 423,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "530:16:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 427,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "568:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 426,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "568:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "567:19:1"
            },
            "scope": 465,
            "src": "509:138:1",
            "stateMutability": "view",
            "superFunction": 4767,
            "visibility": "public"
          },
          {
            "body": {
              "id": 449,
              "nodeType": "Block",
              "src": "730:59:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 445,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 438,
                        "src": "768:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 446,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5516,
                        "src": "777:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 443,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "747:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                          "typeString": "contract ERC20SaleRenderer"
                        }
                      },
                      "id": 444,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "userWidgets",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1043,
                      "src": "747:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Sale_$386_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Sale) view external returns (string memory)"
                      }
                    },
                    "id": 447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "747:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 442,
                  "id": 448,
                  "nodeType": "Return",
                  "src": "740:42:1"
                }
              ]
            },
            "documentation": null,
            "id": 450,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "userWidgets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 438,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 450,
                  "src": "674:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 437,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "674:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "673:16:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 441,
                  "name": "jsonObject",
                  "nodeType": "VariableDeclaration",
                  "scope": 450,
                  "src": "711:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 440,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "711:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "710:19:1"
            },
            "scope": 465,
            "src": "653:136:1",
            "stateMutability": "view",
            "superFunction": 4774,
            "visibility": "public"
          },
          {
            "body": {
              "id": 463,
              "nodeType": "Block",
              "src": "866:54:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 459,
                        "name": "_locale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 452,
                        "src": "899:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 460,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5516,
                        "src": "908:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_contract$_RenderableERC20Sale_$465",
                          "typeString": "contract RenderableERC20Sale"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 457,
                        "name": "renderer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 404,
                        "src": "883:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20SaleRenderer_$1155",
                          "typeString": "contract ERC20SaleRenderer"
                        }
                      },
                      "id": 458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "inputs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1154,
                      "src": "883:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_contract$_ERC20Sale_$386_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (string memory,contract ERC20Sale) view external returns (string memory)"
                      }
                    },
                    "id": 461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "883:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 456,
                  "id": 462,
                  "nodeType": "Return",
                  "src": "876:37:1"
                }
              ]
            },
            "documentation": null,
            "id": 464,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "inputs",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 452,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 464,
                  "src": "811:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 451,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "811:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "810:16:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 455,
                  "name": "jsonArray",
                  "nodeType": "VariableDeclaration",
                  "scope": 464,
                  "src": "848:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 454,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "848:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "847:18:1"
            },
            "scope": 465,
            "src": "795:125:1",
            "stateMutability": "view",
            "superFunction": 4781,
            "visibility": "public"
          }
        ],
        "scope": 466,
        "src": "156:766:1"
      }
    ],
    "src": "0:923:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-11-01T09:01:02.329Z"
}