{
  "contractName": "ProxyCreator",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "created",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "app",
          "type": "address"
        },
        {
          "name": "packageName",
          "type": "string"
        },
        {
          "name": "contractName",
          "type": "string"
        },
        {
          "name": "admin",
          "type": "address"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506106af806100206000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461005c578063325a19f1146100ec5780636f7b86be14610143575b600080fd5b34801561006857600080fd5b50610071610278565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b1578082015181840152602081019050610096565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100f857600080fd5b506101016102b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014f57600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506102db565b005b60606040805190810160405280600c81526020017f50726f787943726561746f720000000000000000000000000000000000000000815250905090565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060019054906101000a900460ff16806102fb57506102fa610672565b5b8061031257506000809054906101000a900460ff16155b15156103ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff1663cd3e318a868686866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001848103845288818151815260200191508051906020019080838360005b838110156104b857808201518184015260208101905061049d565b50505050905090810190601f1680156104e55780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b8381101561051e578082015181840152602081019050610503565b50505050905090810190601f16801561054b5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015610584578082015181840152602081019050610569565b50505050905090810190601f1680156105b15780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050506040513d60208110156105ff57600080fd5b8101908080519060200190929190505050603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548160ff021916908315150217905550505050505050565b600080303b905060008114915050905600a165627a7a72305820f40a7d7c8b205a06ba39f9bcc8994ee746b77bd8972aa89a2716e554f6c4bb680029",
  "deployedBytecode": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461005c578063325a19f1146100ec5780636f7b86be14610143575b600080fd5b34801561006857600080fd5b50610071610278565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b1578082015181840152602081019050610096565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100f857600080fd5b506101016102b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014f57600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506102db565b005b60606040805190810160405280600c81526020017f50726f787943726561746f720000000000000000000000000000000000000000815250905090565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060019054906101000a900460ff16806102fb57506102fa610672565b5b8061031257506000809054906101000a900460ff16155b15156103ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff1663cd3e318a868686866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001848103845288818151815260200191508051906020019080838360005b838110156104b857808201518184015260208101905061049d565b50505050905090810190601f1680156104e55780820380516001836020036101000a031916815260200191505b50848103835287818151815260200191508051906020019080838360005b8381101561051e578082015181840152602081019050610503565b50505050905090810190601f16801561054b5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015610584578082015181840152602081019050610569565b50505050905090810190601f1680156105b15780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b505050506040513d60208110156105ff57600080fd5b8101908080519060200190929190505050603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548160ff021916908315150217905550505050505050565b600080303b905060008114915050905600a165627a7a72305820f40a7d7c8b205a06ba39f9bcc8994ee746b77bd8972aa89a2716e554f6c4bb680029",
  "sourceMap": "91:342:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;91:342:13;;;;;;;",
  "deployedSourceMap": "91:342:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:77:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;353:77:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;135:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;135:22:13;;;;;;;;;;;;;;;;;;;;;;;;;;;162:187;;8:9:-1;5:2;;;30:1;27;20:12;5:2;162:187:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:77;390:6;404:21;;;;;;;;;;;;;;;;;;;;353:77;:::o;135:22::-;;;;;;;;;;;;;:::o;162:187::-;1129:20:0;1024:12;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1152:12;;;;;;;;;;;1129:35;;1185:4;1170:12;;:19;;;;;;;;;;;;;;;;;;1209:4;1195:11;;:18;;;;;;;;;;;;;;;;;;294:3:13;:10;;;305:11;318:12;332:5;339:4;294:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;294:50:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;294:50:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;294:50:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;294:50:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;294:50:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;294:50:13;;;;;;;;;;;;;;;;284:7;;:60;;;;;;;;;;;;;;;;;;1243:15:0;1228:12;;:30;;;;;;;;;;;;;;;;;;162:187:13;;;;;;:::o;1349:467:0:-;1396:4;1737:10;1782:7;1770:20;1764:26;;1810:1;1804:2;:7;1797:14;;1349:467;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"../application/App.sol\";\nimport \"../Initializable.sol\";\n\ncontract ProxyCreator is Initializable {\n\n  address public created;\n\n  function initialize(App app, string packageName, string contractName, address admin, bytes data) public initializer {\n    created = app.create(packageName, contractName, admin, data);\n  }\n\n  function name() public pure returns (string) {\n    return \"ProxyCreator\";\n  }\n\n}\n",
  "sourcePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/ProxyCreator.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/ProxyCreator.sol",
    "exportedSymbols": {
      "ProxyCreator": [
        1892
      ]
    },
    "id": 1893,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1851,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:13"
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/application/App.sol",
        "file": "../application/App.sol",
        "id": 1852,
        "nodeType": "ImportDirective",
        "scope": 1893,
        "sourceUnit": 309,
        "src": "26:32:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 1853,
        "nodeType": "ImportDirective",
        "scope": 1893,
        "sourceUnit": 56,
        "src": "59:30:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1854,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "116:13:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1855,
            "nodeType": "InheritanceSpecifier",
            "src": "116:13:13"
          }
        ],
        "contractDependencies": [
          55
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1892,
        "linearizedBaseContracts": [
          1892,
          55
        ],
        "name": "ProxyCreator",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1857,
            "name": "created",
            "nodeType": "VariableDeclaration",
            "scope": 1892,
            "src": "135:22:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1856,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "135:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1882,
              "nodeType": "Block",
              "src": "278:71:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1872,
                      "name": "created",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1857,
                      "src": "284:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1875,
                          "name": "packageName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1861,
                          "src": "305:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1876,
                          "name": "contractName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1863,
                          "src": "318:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1877,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1865,
                          "src": "332:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1878,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1867,
                          "src": "339:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1873,
                          "name": "app",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1859,
                          "src": "294:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_App_$308",
                            "typeString": "contract App"
                          }
                        },
                        "id": 1874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "create",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 307,
                        "src": "294:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_AdminUpgradeabilityProxy_$2812_$",
                          "typeString": "function (string memory,string memory,address,bytes memory) payable external returns (contract AdminUpgradeabilityProxy)"
                        }
                      },
                      "id": 1879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "294:50:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AdminUpgradeabilityProxy_$2812",
                        "typeString": "contract AdminUpgradeabilityProxy"
                      }
                    },
                    "src": "284:60:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1881,
                  "nodeType": "ExpressionStatement",
                  "src": "284:60:13"
                }
              ]
            },
            "documentation": null,
            "id": 1883,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1870,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1869,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "266:11:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "266:11:13"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1859,
                  "name": "app",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "182:7:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_App_$308",
                    "typeString": "contract App"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1858,
                    "name": "App",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 308,
                    "src": "182:3:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_App_$308",
                      "typeString": "contract App"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1861,
                  "name": "packageName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "191:18:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1860,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "191:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1863,
                  "name": "contractName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "211:19:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1862,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "211:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1865,
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "232:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1864,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "232:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1867,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "247:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1866,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "181:77:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 1871,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "278:0:13"
            },
            "scope": 1892,
            "src": "162:187:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1890,
              "nodeType": "Block",
              "src": "398:32:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "50726f787943726561746f72",
                    "id": 1888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "411:14:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f386af0e192358159c576d9cb03b2fccac834c116b8b7298f6ce24e796a80da2",
                      "typeString": "literal_string \"ProxyCreator\""
                    },
                    "value": "ProxyCreator"
                  },
                  "functionReturnParameters": 1887,
                  "id": 1889,
                  "nodeType": "Return",
                  "src": "404:21:13"
                }
              ]
            },
            "documentation": null,
            "id": 1891,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1884,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "366:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 1887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1886,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1891,
                  "src": "390:6:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1885,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "390:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "389:8:13"
            },
            "scope": 1892,
            "src": "353:77:13",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1893,
        "src": "91:342:13"
      }
    ],
    "src": "0:434:13"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/ProxyCreator.sol",
    "exportedSymbols": {
      "ProxyCreator": [
        1892
      ]
    },
    "id": 1893,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1851,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:13"
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/application/App.sol",
        "file": "../application/App.sol",
        "id": 1852,
        "nodeType": "ImportDirective",
        "scope": 1893,
        "sourceUnit": 309,
        "src": "26:32:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 1853,
        "nodeType": "ImportDirective",
        "scope": 1893,
        "sourceUnit": 56,
        "src": "59:30:13",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1854,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "116:13:13",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1855,
            "nodeType": "InheritanceSpecifier",
            "src": "116:13:13"
          }
        ],
        "contractDependencies": [
          55
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1892,
        "linearizedBaseContracts": [
          1892,
          55
        ],
        "name": "ProxyCreator",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1857,
            "name": "created",
            "nodeType": "VariableDeclaration",
            "scope": 1892,
            "src": "135:22:13",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1856,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "135:7:13",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1882,
              "nodeType": "Block",
              "src": "278:71:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1872,
                      "name": "created",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1857,
                      "src": "284:7:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1875,
                          "name": "packageName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1861,
                          "src": "305:11:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1876,
                          "name": "contractName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1863,
                          "src": "318:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1877,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1865,
                          "src": "332:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1878,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1867,
                          "src": "339:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1873,
                          "name": "app",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1859,
                          "src": "294:3:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_App_$308",
                            "typeString": "contract App"
                          }
                        },
                        "id": 1874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "create",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 307,
                        "src": "294:10:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_AdminUpgradeabilityProxy_$2812_$",
                          "typeString": "function (string memory,string memory,address,bytes memory) payable external returns (contract AdminUpgradeabilityProxy)"
                        }
                      },
                      "id": 1879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "294:50:13",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AdminUpgradeabilityProxy_$2812",
                        "typeString": "contract AdminUpgradeabilityProxy"
                      }
                    },
                    "src": "284:60:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1881,
                  "nodeType": "ExpressionStatement",
                  "src": "284:60:13"
                }
              ]
            },
            "documentation": null,
            "id": 1883,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1870,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1869,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "266:11:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "266:11:13"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1859,
                  "name": "app",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "182:7:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_App_$308",
                    "typeString": "contract App"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1858,
                    "name": "App",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 308,
                    "src": "182:3:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_App_$308",
                      "typeString": "contract App"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1861,
                  "name": "packageName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "191:18:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1860,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "191:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1863,
                  "name": "contractName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "211:19:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1862,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "211:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1865,
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "232:13:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1864,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "232:7:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1867,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1883,
                  "src": "247:10:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1866,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:5:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "181:77:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 1871,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "278:0:13"
            },
            "scope": 1892,
            "src": "162:187:13",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1890,
              "nodeType": "Block",
              "src": "398:32:13",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "50726f787943726561746f72",
                    "id": 1888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "411:14:13",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f386af0e192358159c576d9cb03b2fccac834c116b8b7298f6ce24e796a80da2",
                      "typeString": "literal_string \"ProxyCreator\""
                    },
                    "value": "ProxyCreator"
                  },
                  "functionReturnParameters": 1887,
                  "id": 1889,
                  "nodeType": "Return",
                  "src": "404:21:13"
                }
              ]
            },
            "documentation": null,
            "id": 1891,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1884,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "366:2:13"
            },
            "payable": false,
            "returnParameters": {
              "id": 1887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1886,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1891,
                  "src": "390:6:13",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1885,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "390:6:13",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "389:8:13"
            },
            "scope": 1892,
            "src": "353:77:13",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1893,
        "src": "91:342:13"
      }
    ],
    "src": "0:434:13"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-02-15T10:15:15.377Z"
}