{
  "Outputs": {
    "stacksFunction": {
      "Value": "[[\"testAsyncGeoprocessor\",\"testPreprocessor\"],[\"testSyncGeoprocessor\"]]"
    },
    "stacksWorker": {
      "Value": "[[\"testWorker\"]]"
    },
    "GpRestApiEndpointBF901973": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Ref": "GpRestApi3C403820"
            },
            ".execute-api.us-west-1.",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
            },
            "/"
          ]
        ]
      }
    },
    "restApiUrl": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Ref": "GpRestApi3C403820"
            },
            ".execute-api.us-west-1.",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
            },
            "/"
          ]
        ]
      }
    },
    "socketApiUrl": {
      "Value": {
        "Fn::GetAtt": [
          "WebSocketApi34BCF99B",
          "ApiEndpoint"
        ]
      }
    },
    "datasetBucketUrl": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://s3.us-west-1.",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "GpDatasetBucketFB843E6B"
            }
          ]
        ]
      }
    },
    "resultBucketUrl": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://s3.us-west-1.",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "GpResultBucketE67AA9DE"
            }
          ]
        ]
      }
    },
    "clientBucketUrl": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://s3.us-west-1.",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "GpClientBucket52FF5CA3"
            }
          ]
        ]
      }
    },
    "clientDistributionUrl": {
      "Value": {
        "Fn::GetAtt": [
          "GpClientDistributionCFDistribution451DE9D6",
          "DomainName"
        ]
      }
    }
  },
  "Resources": {
    "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "referencetoallGpTasksTable12B6BF27Arn": {
            "Fn::GetAtt": [
              "GpTasksTable2F8F158E",
              "Arn"
            ]
          },
          "referencetoallGpEstimatesTableCE15A663Arn": {
            "Fn::GetAtt": [
              "GpEstimatesTableBB595885",
              "Arn"
            ]
          },
          "referencetoallGpResultBucketB02A2DF5Arn": {
            "Fn::GetAtt": [
              "GpResultBucketE67AA9DE",
              "Arn"
            ]
          },
          "referencetoallGpDatasetBucket908AF7ACArn": {
            "Fn::GetAtt": [
              "GpDatasetBucketFB843E6B",
              "Arn"
            ]
          },
          "referencetoallGpTasksTable12B6BF27Ref": {
            "Ref": "GpTasksTable2F8F158E"
          },
          "referencetoallGpEstimatesTableCE15A663Ref": {
            "Ref": "GpEstimatesTableBB595885"
          },
          "referencetoallGpResultBucketB02A2DF5Ref": {
            "Ref": "GpResultBucketE67AA9DE"
          },
          "referencetoallGpDatasetBucket908AF7ACRef": {
            "Ref": "GpDatasetBucketFB843E6B"
          },
          "referencetoallGpSubscriptionsTableA2CCEB35Ref": {
            "Ref": "GpSubscriptionsTable6D399C8E"
          },
          "referencetoallWebSocketApi6D42F63ERef": {
            "Ref": "WebSocketApi34BCF99B"
          },
          "referencetoallworkersgroup0NestedStackworkersgroup0NestedStackResource2196E801Outputsallworkersgroup0testWorkerGpSyncHandlerB8F270BDArn": {
            "Fn::GetAtt": [
              "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
              "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
            ]
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://s3.us-west-1.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              {
                "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
              },
              "/4f84cffe010e18a51d542869d506138817664d16fadc8c43b7bd675d2a98e10b.json"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "referencetoallGpTasksTable12B6BF27Arn": {
            "Fn::GetAtt": [
              "GpTasksTable2F8F158E",
              "Arn"
            ]
          },
          "referencetoallGpEstimatesTableCE15A663Arn": {
            "Fn::GetAtt": [
              "GpEstimatesTableBB595885",
              "Arn"
            ]
          },
          "referencetoallGpResultBucketB02A2DF5Arn": {
            "Fn::GetAtt": [
              "GpResultBucketE67AA9DE",
              "Arn"
            ]
          },
          "referencetoallGpDatasetBucket908AF7ACArn": {
            "Fn::GetAtt": [
              "GpDatasetBucketFB843E6B",
              "Arn"
            ]
          },
          "referencetoallGpTasksTable12B6BF27Ref": {
            "Ref": "GpTasksTable2F8F158E"
          },
          "referencetoallGpEstimatesTableCE15A663Ref": {
            "Ref": "GpEstimatesTableBB595885"
          },
          "referencetoallGpResultBucketB02A2DF5Ref": {
            "Ref": "GpResultBucketE67AA9DE"
          },
          "referencetoallGpDatasetBucket908AF7ACRef": {
            "Ref": "GpDatasetBucketFB843E6B"
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://s3.us-west-1.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              {
                "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
              },
              "/812bf2e86628fa662accda1eb4c38b7b64ed8f768c21e9d7f87fa856900f77f0.json"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "Parameters": {
          "referencetoallGpTasksTable12B6BF27Arn": {
            "Fn::GetAtt": [
              "GpTasksTable2F8F158E",
              "Arn"
            ]
          },
          "referencetoallGpEstimatesTableCE15A663Arn": {
            "Fn::GetAtt": [
              "GpEstimatesTableBB595885",
              "Arn"
            ]
          },
          "referencetoallGpResultBucketB02A2DF5Arn": {
            "Fn::GetAtt": [
              "GpResultBucketE67AA9DE",
              "Arn"
            ]
          },
          "referencetoallGpDatasetBucket908AF7ACArn": {
            "Fn::GetAtt": [
              "GpDatasetBucketFB843E6B",
              "Arn"
            ]
          },
          "referencetoallGpTasksTable12B6BF27Ref": {
            "Ref": "GpTasksTable2F8F158E"
          },
          "referencetoallGpEstimatesTableCE15A663Ref": {
            "Ref": "GpEstimatesTableBB595885"
          },
          "referencetoallGpResultBucketB02A2DF5Ref": {
            "Ref": "GpResultBucketE67AA9DE"
          },
          "referencetoallGpDatasetBucket908AF7ACRef": {
            "Ref": "GpDatasetBucketFB843E6B"
          }
        },
        "TemplateURL": {
          "Fn::Join": [
            "",
            [
              "https://s3.us-west-1.",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/",
              {
                "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
              },
              "/7be721955a5d2096ab740aff1d5a0bae84d04c45fba29c7ef864290047f5d5a7.json"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpServiceRootFunctionServiceRoleEE990671": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ]
      }
    },
    "GpServiceRootFunction2A71395D": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "80731084003cec4c97e8b81523fd799ead39c112cf96422bcbe0f900ee344db8.zip"
        },
        "Environment": {
          "Variables": {
            "clientDistributionUrl": {
              "Fn::GetAtt": [
                "GpClientDistributionCFDistribution451DE9D6",
                "DomainName"
              ]
            }
          }
        },
        "FunctionName": "gp-all-metadata",
        "Handler": "serviceHandlers.projectMetadata",
        "Role": {
          "Fn::GetAtt": [
            "GpServiceRootFunctionServiceRoleEE990671",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x"
      },
      "DependsOn": [
        "GpServiceRootFunctionServiceRoleEE990671"
      ]
    },
    "GpSubscribeHandlerServiceRole4CFF6FF3": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ]
      }
    },
    "GpSubscribeHandlerServiceRoleDefaultPolicy813D2B0F": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "execute-api:ManageConnections",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:us-west-1:",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":",
                    {
                      "Ref": "WebSocketApi34BCF99B"
                    },
                    "/*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpSubscriptionsTable6D399C8E",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "GpSubscribeHandlerServiceRoleDefaultPolicy813D2B0F",
        "Roles": [
          {
            "Ref": "GpSubscribeHandlerServiceRole4CFF6FF3"
          }
        ]
      }
    },
    "GpSubscribeHandler254785F4": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "9117122f07c938d594c4e483715db8decc334d8dbdaf3fb8335e978588e9225f.zip"
        },
        "Description": "Subscribe to messages",
        "Environment": {
          "Variables": {
            "SUBSCRIPTIONS_TABLE": {
              "Ref": "GpSubscriptionsTable6D399C8E"
            }
          }
        },
        "FunctionName": "gp-all-subscribe",
        "Handler": "connect.connectHandler",
        "MemorySize": 1024,
        "Role": {
          "Fn::GetAtt": [
            "GpSubscribeHandlerServiceRole4CFF6FF3",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 3
      },
      "DependsOn": [
        "GpSubscribeHandlerServiceRoleDefaultPolicy813D2B0F",
        "GpSubscribeHandlerServiceRole4CFF6FF3"
      ]
    },
    "GpUnsubscribeHandlerServiceRoleFEFBF6B0": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ]
      }
    },
    "GpUnsubscribeHandlerServiceRoleDefaultPolicyC6A658FB": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "execute-api:ManageConnections",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:us-west-1:",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":",
                    {
                      "Ref": "WebSocketApi34BCF99B"
                    },
                    "/*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpSubscriptionsTable6D399C8E",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "GpUnsubscribeHandlerServiceRoleDefaultPolicyC6A658FB",
        "Roles": [
          {
            "Ref": "GpUnsubscribeHandlerServiceRoleFEFBF6B0"
          }
        ]
      }
    },
    "GpUnsubscribeHandler4BC55849": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "547d8ca4c145a1727b2a46eba2e5a905197594f4a40888e680f6ed898fd38c01.zip"
        },
        "Description": "Unsubscribe from messages",
        "Environment": {
          "Variables": {
            "SUBSCRIPTIONS_TABLE": {
              "Ref": "GpSubscriptionsTable6D399C8E"
            }
          }
        },
        "FunctionName": "gp-all-unsubscribe",
        "Handler": "disconnect.disconnectHandler",
        "MemorySize": 1024,
        "Role": {
          "Fn::GetAtt": [
            "GpUnsubscribeHandlerServiceRoleFEFBF6B0",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 3
      },
      "DependsOn": [
        "GpUnsubscribeHandlerServiceRoleDefaultPolicyC6A658FB",
        "GpUnsubscribeHandlerServiceRoleFEFBF6B0"
      ]
    },
    "GpSendHandlerServiceRole1171D41C": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ]
      }
    },
    "GpSendHandlerServiceRoleDefaultPolicy165BA1CD": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "execute-api:ManageConnections",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:us-west-1:",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":",
                    {
                      "Ref": "WebSocketApi34BCF99B"
                    },
                    "/*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpSubscriptionsTable6D399C8E",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpEstimatesTableBB595885",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "GpSendHandlerServiceRoleDefaultPolicy165BA1CD",
        "Roles": [
          {
            "Ref": "GpSendHandlerServiceRole1171D41C"
          }
        ]
      }
    },
    "GpSendHandlerEE9E8D5C": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "ed3103e0d208c9e645ac2c88e44716acc4835d57cd700bf8ec8c95dd7ac0cc3c.zip"
        },
        "Description": " for sending messages on sockets",
        "Environment": {
          "Variables": {
            "SUBSCRIPTIONS_TABLE": {
              "Ref": "GpSubscriptionsTable6D399C8E"
            }
          }
        },
        "FunctionName": "gp-all-send",
        "Handler": "sendmessage.sendHandler",
        "MemorySize": 1024,
        "Role": {
          "Fn::GetAtt": [
            "GpSendHandlerServiceRole1171D41C",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Timeout": 3
      },
      "DependsOn": [
        "GpSendHandlerServiceRoleDefaultPolicy165BA1CD",
        "GpSendHandlerServiceRole1171D41C"
      ]
    },
    "GpDatasetBucketFB843E6B": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketName": "gp-all-datasets",
        "CorsConfiguration": {
          "CorsRules": [
            {
              "AllowedHeaders": [
                "*"
              ],
              "AllowedMethods": [
                "HEAD",
                "GET"
              ],
              "AllowedOrigins": [
                "*"
              ],
              "Id": "cors-rule",
              "MaxAge": 3600
            }
          ]
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": false,
          "BlockPublicPolicy": false,
          "IgnorePublicAcls": false,
          "RestrictPublicBuckets": false
        },
        "Tags": [
          {
            "Key": "aws-cdk:auto-delete-objects",
            "Value": "true"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpDatasetBucketPolicy2C347D8F": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "GpDatasetBucketFB843E6B"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:GetObject",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "GpDatasetBucketFB843E6B",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "s3:PutBucketPolicy",
                "s3:GetBucket*",
                "s3:List*",
                "s3:DeleteObject*"
              ],
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::GetAtt": [
                    "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
                    "Arn"
                  ]
                }
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpDatasetBucketFB843E6B",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "GpDatasetBucketFB843E6B",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "GpDatasetBucketAutoDeleteObjectsCustomResourceD389095A": {
      "Type": "Custom::S3AutoDeleteObjects",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
            "Arn"
          ]
        },
        "BucketName": {
          "Ref": "GpDatasetBucketFB843E6B"
        }
      },
      "DependsOn": [
        "GpDatasetBucketPolicy2C347D8F"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ]
        },
        "ManagedPolicyArns": [
          {
            "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
          }
        ]
      }
    },
    "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "faa95a81ae7d7373f3e1f242268f904eb748d8d0fdd306e8a6fe515a1905a7d6.zip"
        },
        "Timeout": 900,
        "MemorySize": 128,
        "Handler": "index.handler",
        "Role": {
          "Fn::GetAtt": [
            "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
            "Arn"
          ]
        },
        "Runtime": "nodejs20.x",
        "Description": {
          "Fn::Join": [
            "",
            [
              "Lambda function for auto-deleting objects in ",
              {
                "Ref": "GpDatasetBucketFB843E6B"
              },
              " S3 bucket."
            ]
          ]
        }
      },
      "DependsOn": [
        "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092"
      ]
    },
    "GpResultBucketE67AA9DE": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketName": "gp-all-results",
        "CorsConfiguration": {
          "CorsRules": [
            {
              "AllowedHeaders": [
                "*"
              ],
              "AllowedMethods": [
                "HEAD",
                "GET"
              ],
              "AllowedOrigins": [
                "*"
              ],
              "Id": "cors-rule",
              "MaxAge": 3600
            }
          ]
        },
        "Tags": [
          {
            "Key": "aws-cdk:auto-delete-objects",
            "Value": "true"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpResultBucketPolicyD12C641A": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "GpResultBucketE67AA9DE"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "s3:PutBucketPolicy",
                "s3:GetBucket*",
                "s3:List*",
                "s3:DeleteObject*"
              ],
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::GetAtt": [
                    "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
                    "Arn"
                  ]
                }
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpResultBucketE67AA9DE",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "GpResultBucketE67AA9DE",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "GpResultBucketAutoDeleteObjectsCustomResource1EBB06E5": {
      "Type": "Custom::S3AutoDeleteObjects",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
            "Arn"
          ]
        },
        "BucketName": {
          "Ref": "GpResultBucketE67AA9DE"
        }
      },
      "DependsOn": [
        "GpResultBucketPolicyD12C641A"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpClientBucket52FF5CA3": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketName": "gp-all-client",
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": false,
          "BlockPublicPolicy": false,
          "IgnorePublicAcls": false,
          "RestrictPublicBuckets": false
        },
        "Tags": [
          {
            "Key": "aws-cdk:auto-delete-objects",
            "Value": "true"
          },
          {
            "Key": "aws-cdk:cr-owned:5135519a",
            "Value": "true"
          }
        ],
        "WebsiteConfiguration": {
          "IndexDocument": "index.html"
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpClientBucketPolicy237E3CB1": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "GpClientBucket52FF5CA3"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:GetObject",
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "GpClientBucket52FF5CA3",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "s3:PutBucketPolicy",
                "s3:GetBucket*",
                "s3:List*",
                "s3:DeleteObject*"
              ],
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::GetAtt": [
                    "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
                    "Arn"
                  ]
                }
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpClientBucket52FF5CA3",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "GpClientBucket52FF5CA3",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "s3:GetObject*",
                "s3:GetBucket*",
                "s3:List*"
              ],
              "Effect": "Allow",
              "Principal": {
                "CanonicalUser": {
                  "Fn::GetAtt": [
                    "OriginAccessIdentityDF1E3CAC",
                    "S3CanonicalUserId"
                  ]
                }
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpClientBucket52FF5CA3",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "GpClientBucket52FF5CA3",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "s3:GetObject",
              "Effect": "Allow",
              "Principal": {
                "CanonicalUser": {
                  "Fn::GetAtt": [
                    "OriginAccessIdentityDF1E3CAC",
                    "S3CanonicalUserId"
                  ]
                }
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "GpClientBucket52FF5CA3",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        }
      }
    },
    "GpClientBucketAutoDeleteObjectsCustomResource951B71A6": {
      "Type": "Custom::S3AutoDeleteObjects",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
            "Arn"
          ]
        },
        "BucketName": {
          "Ref": "GpClientBucket52FF5CA3"
        }
      },
      "DependsOn": [
        "GpClientBucketPolicy237E3CB1"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "OriginAccessIdentityDF1E3CAC": {
      "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
      "Properties": {
        "CloudFrontOriginAccessIdentityConfig": {
          "Comment": "Allows CloudFront to reach the bucket"
        }
      }
    },
    "GpClientDistributionCFDistribution451DE9D6": {
      "Type": "AWS::CloudFront::Distribution",
      "Properties": {
        "DistributionConfig": {
          "Comment": "gp-all",
          "DefaultCacheBehavior": {
            "AllowedMethods": [
              "GET",
              "HEAD"
            ],
            "CachedMethods": [
              "GET",
              "HEAD"
            ],
            "Compress": true,
            "ForwardedValues": {
              "Cookies": {
                "Forward": "none"
              },
              "QueryString": false
            },
            "TargetOriginId": "origin1",
            "ViewerProtocolPolicy": "redirect-to-https"
          },
          "DefaultRootObject": "index.html",
          "Enabled": true,
          "HttpVersion": "http2",
          "IPV6Enabled": true,
          "Origins": [
            {
              "ConnectionAttempts": 3,
              "ConnectionTimeout": 10,
              "DomainName": {
                "Fn::GetAtt": [
                  "GpClientBucket52FF5CA3",
                  "RegionalDomainName"
                ]
              },
              "Id": "origin1",
              "S3OriginConfig": {
                "OriginAccessIdentity": {
                  "Fn::Join": [
                    "",
                    [
                      "origin-access-identity/cloudfront/",
                      {
                        "Ref": "OriginAccessIdentityDF1E3CAC"
                      }
                    ]
                  ]
                }
              }
            }
          ],
          "PriceClass": "PriceClass_100",
          "ViewerCertificate": {
            "CloudFrontDefaultCertificate": true
          }
        }
      }
    },
    "ClientBucketDeployAwsCliLayer500B9061": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "Content": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "09ee37fb9a746a9dea0618b3024913848346b4b63d08d3fae387b9a11ac83a01.zip"
        },
        "Description": "/opt/awscli/aws"
      }
    },
    "ClientBucketDeployCustomResource05C3711D": {
      "Type": "Custom::CDKBucketDeployment",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536",
            "Arn"
          ]
        },
        "SourceBucketNames": [
          {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          }
        ],
        "SourceObjectKeys": [
          "f11d9051beb9115cd4cce5f04a32de7fe1fd5a0758c61178cd10ec14631e1285.zip"
        ],
        "DestinationBucketName": {
          "Ref": "GpClientBucket52FF5CA3"
        },
        "Prune": true,
        "SystemMetadata": {
          "cache-control": "public, max-age=31536000"
        },
        "DistributionId": {
          "Ref": "GpClientDistributionCFDistribution451DE9D6"
        },
        "DistributionPaths": [
          "/*"
        ],
        "OutputObjectKeys": true
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ]
      }
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "s3:GetObject*",
                "s3:GetBucket*",
                "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":s3:::",
                      {
                        "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
                      }
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":s3:::",
                      {
                        "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "s3:GetObject*",
                "s3:GetBucket*",
                "s3:List*",
                "s3:DeleteObject*",
                "s3:PutObject",
                "s3:PutObjectLegalHold",
                "s3:PutObjectRetention",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionTagging",
                "s3:Abort*"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "GpClientBucket52FF5CA3",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "GpClientBucket52FF5CA3",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "cloudfront:GetInvalidation",
                "cloudfront:CreateInvalidation"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF",
        "Roles": [
          {
            "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"
          }
        ]
      }
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-us-west-1"
          },
          "S3Key": "c6358465bf49dfae556bb430bf9c81fa578c221b82c308e3707901b1dd654762.zip"
        },
        "Environment": {
          "Variables": {
            "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"
          }
        },
        "Handler": "index.handler",
        "Layers": [
          {
            "Ref": "ClientBucketDeployAwsCliLayer500B9061"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265",
            "Arn"
          ]
        },
        "Runtime": "python3.11",
        "Timeout": 900
      },
      "DependsOn": [
        "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF",
        "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"
      ]
    },
    "GpTasksTable2F8F158E": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          },
          {
            "AttributeName": "service",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          },
          {
            "AttributeName": "service",
            "KeyType": "RANGE"
          }
        ],
        "TableName": "gp-all-tasks"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpEstimatesTableBB595885": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "service",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "service",
            "KeyType": "HASH"
          }
        ],
        "TableName": "gp-all-estimates"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpSubscriptionsTable6D399C8E": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "connectionId",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "connectionId",
            "KeyType": "HASH"
          }
        ],
        "TableName": "gp-all-subscriptions"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpRestApi3C403820": {
      "Type": "AWS::ApiGateway::RestApi",
      "Properties": {
        "Description": "Serves API requests for all.",
        "Name": "gp-all"
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete"
    },
    "GpRestApiCloudWatchRole263212C0": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "apigateway.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
              ]
            ]
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain"
    },
    "GpRestApiAccountFCFC4532": {
      "Type": "AWS::ApiGateway::Account",
      "Properties": {
        "CloudWatchRoleArn": {
          "Fn::GetAtt": [
            "GpRestApiCloudWatchRole263212C0",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "GpRestApi3C403820"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain"
    },
    "GpRestApiDeployment8BC1361Ab4d6c3a094cd2edddf9ea75be149b2b4": {
      "Type": "AWS::ApiGateway::Deployment",
      "Properties": {
        "Description": "Serves API requests for all.",
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      },
      "DependsOn": [
        "GpRestApiGET037A17F9",
        "GpRestApiOPTIONS0D97A1CF",
        "GpRestApitestAsyncGeoprocessorGET5EEF21D2",
        "GpRestApitestAsyncGeoprocessorOPTIONS5536AC3F",
        "GpRestApitestAsyncGeoprocessorPOSTB047E8EA",
        "GpRestApitestAsyncGeoprocessor74C8F6D0",
        "GpRestApitestPreprocessorOPTIONSF3E96077",
        "GpRestApitestPreprocessorPOST8DD6678F",
        "GpRestApitestPreprocessor47A725A2",
        "GpRestApitestSyncGeoprocessorGET0995D01E",
        "GpRestApitestSyncGeoprocessorOPTIONSEA2E29D8",
        "GpRestApitestSyncGeoprocessorPOSTC2863875",
        "GpRestApitestSyncGeoprocessorACDEBF58",
        "GpRestApitestWorkerGETF78A1783",
        "GpRestApitestWorkerOPTIONS86231A77",
        "GpRestApitestWorkerPOST7DF7D59A",
        "GpRestApitestWorker18DF1A6B"
      ]
    },
    "GpRestApiDeploymentStageprodFDC6A6D1": {
      "Type": "AWS::ApiGateway::Stage",
      "Properties": {
        "DeploymentId": {
          "Ref": "GpRestApiDeployment8BC1361Ab4d6c3a094cd2edddf9ea75be149b2b4"
        },
        "MethodSettings": [
          {
            "DataTraceEnabled": false,
            "HttpMethod": "*",
            "ResourcePath": "/*",
            "ThrottlingBurstLimit": 20,
            "ThrottlingRateLimit": 40
          }
        ],
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        },
        "StageName": "prod"
      },
      "DependsOn": [
        "GpRestApiAccountFCFC4532"
      ]
    },
    "GpRestApiOPTIONS0D97A1CF": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Fn::GetAtt": [
            "GpRestApi3C403820",
            "RootResourceId"
          ]
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApiGETApiPermissionallGpRestApiBEE13B7AGETD0EECA0F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "GpServiceRootFunction2A71395D",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/GET/"
            ]
          ]
        }
      }
    },
    "GpRestApiGETApiPermissionTestallGpRestApiBEE13B7AGET61968C64": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "GpServiceRootFunction2A71395D",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/GET/"
            ]
          ]
        }
      }
    },
    "GpRestApiGET037A17F9": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "GpServiceRootFunction2A71395D",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Fn::GetAtt": [
            "GpRestApi3C403820",
            "RootResourceId"
          ]
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestPreprocessor47A725A2": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "GpRestApi3C403820",
            "RootResourceId"
          ]
        },
        "PathPart": "testPreprocessor",
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestPreprocessorOPTIONSF3E96077": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "GpRestApitestPreprocessor47A725A2"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestPreprocessorPOSTApiPermissionallGpRestApiBEE13B7APOSTtestPreprocessor1AD6F63E": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
            "Outputs.allfunctionsgroup0testPreprocessorGpSyncHandler3FE19D94Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/POST/testPreprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestPreprocessorPOSTApiPermissionTestallGpRestApiBEE13B7APOSTtestPreprocessorCFD488AF": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
            "Outputs.allfunctionsgroup0testPreprocessorGpSyncHandler3FE19D94Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/POST/testPreprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestPreprocessorPOST8DD6678F": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
                    "Outputs.allfunctionsgroup0testPreprocessorGpSyncHandler3FE19D94Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestPreprocessor47A725A2"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestSyncGeoprocessorACDEBF58": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "GpRestApi3C403820",
            "RootResourceId"
          ]
        },
        "PathPart": "testSyncGeoprocessor",
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestSyncGeoprocessorOPTIONSEA2E29D8": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "GpRestApitestSyncGeoprocessorACDEBF58"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestSyncGeoprocessorPOSTApiPermissionallGpRestApiBEE13B7APOSTtestSyncGeoprocessorC26C2277": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E",
            "Outputs.allfunctionsgroup1testSyncGeoprocessorGpSyncHandler9FEAF0D0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/POST/testSyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestSyncGeoprocessorPOSTApiPermissionTestallGpRestApiBEE13B7APOSTtestSyncGeoprocessor89420705": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E",
            "Outputs.allfunctionsgroup1testSyncGeoprocessorGpSyncHandler9FEAF0D0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/POST/testSyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestSyncGeoprocessorPOSTC2863875": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E",
                    "Outputs.allfunctionsgroup1testSyncGeoprocessorGpSyncHandler9FEAF0D0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestSyncGeoprocessorACDEBF58"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestSyncGeoprocessorGETApiPermissionallGpRestApiBEE13B7AGETtestSyncGeoprocessor0CDB24C7": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E",
            "Outputs.allfunctionsgroup1testSyncGeoprocessorGpSyncHandler9FEAF0D0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/GET/testSyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestSyncGeoprocessorGETApiPermissionTestallGpRestApiBEE13B7AGETtestSyncGeoprocessorDEBFA09A": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E",
            "Outputs.allfunctionsgroup1testSyncGeoprocessorGpSyncHandler9FEAF0D0Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/GET/testSyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestSyncGeoprocessorGET0995D01E": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "functionsgroup1NestedStackfunctionsgroup1NestedStackResource495CB61E",
                    "Outputs.allfunctionsgroup1testSyncGeoprocessorGpSyncHandler9FEAF0D0Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestSyncGeoprocessorACDEBF58"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestWorker18DF1A6B": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "GpRestApi3C403820",
            "RootResourceId"
          ]
        },
        "PathPart": "testWorker",
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestWorkerOPTIONS86231A77": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "GpRestApitestWorker18DF1A6B"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestWorkerPOSTApiPermissionallGpRestApiBEE13B7APOSTtestWorker1561E67B": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
            "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/POST/testWorker"
            ]
          ]
        }
      }
    },
    "GpRestApitestWorkerPOSTApiPermissionTestallGpRestApiBEE13B7APOSTtestWorker179EDE5E": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
            "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/POST/testWorker"
            ]
          ]
        }
      }
    },
    "GpRestApitestWorkerPOST7DF7D59A": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
                    "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestWorker18DF1A6B"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestWorkerGETApiPermissionallGpRestApiBEE13B7AGETtestWorker177DC1D5": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
            "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/GET/testWorker"
            ]
          ]
        }
      }
    },
    "GpRestApitestWorkerGETApiPermissionTestallGpRestApiBEE13B7AGETtestWorker495A7D6F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
            "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/GET/testWorker"
            ]
          ]
        }
      }
    },
    "GpRestApitestWorkerGETF78A1783": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "workersgroup0NestedStackworkersgroup0NestedStackResourceFDAA4C75",
                    "Outputs.allworkersgroup0testWorkerGpSyncHandlerB8F270BDArn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestWorker18DF1A6B"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestAsyncGeoprocessor74C8F6D0": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "GpRestApi3C403820",
            "RootResourceId"
          ]
        },
        "PathPart": "testAsyncGeoprocessor",
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorOPTIONS5536AC3F": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "ApiKeyRequired": false,
        "AuthorizationType": "NONE",
        "HttpMethod": "OPTIONS",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ],
        "ResourceId": {
          "Ref": "GpRestApitestAsyncGeoprocessor74C8F6D0"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorPOSTApiPermissionallGpRestApiBEE13B7APOSTtestAsyncGeoprocessor32204A3B": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
            "Outputs.allfunctionsgroup0testAsyncGeoprocessorGpAsyncHandlerStartCDB54107Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/POST/testAsyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorPOSTApiPermissionTestallGpRestApiBEE13B7APOSTtestAsyncGeoprocessorA91C6452": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
            "Outputs.allfunctionsgroup0testAsyncGeoprocessorGpAsyncHandlerStartCDB54107Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/POST/testAsyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorPOSTB047E8EA": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "POST",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
                    "Outputs.allfunctionsgroup0testAsyncGeoprocessorGpAsyncHandlerStartCDB54107Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestAsyncGeoprocessor74C8F6D0"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorGETApiPermissionallGpRestApiBEE13B7AGETtestAsyncGeoprocessor8D6FA5DD": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
            "Outputs.allfunctionsgroup0testAsyncGeoprocessorGpAsyncHandlerStartCDB54107Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/",
              {
                "Ref": "GpRestApiDeploymentStageprodFDC6A6D1"
              },
              "/GET/testAsyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorGETApiPermissionTestallGpRestApiBEE13B7AGETtestAsyncGeoprocessor1A6CB520": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
            "Outputs.allfunctionsgroup0testAsyncGeoprocessorGpAsyncHandlerStartCDB54107Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "GpRestApi3C403820"
              },
              "/test-invoke-stage/GET/testAsyncGeoprocessor"
            ]
          ]
        }
      }
    },
    "GpRestApitestAsyncGeoprocessorGET5EEF21D2": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "AuthorizationType": "NONE",
        "HttpMethod": "GET",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "RequestTemplates": {
            "application/json": "{ \"statusCode\": \"200\" }"
          },
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "functionsgroup0NestedStackfunctionsgroup0NestedStackResource23D00E65",
                    "Outputs.allfunctionsgroup0testAsyncGeoprocessorGpAsyncHandlerStartCDB54107Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        },
        "ResourceId": {
          "Ref": "GpRestApitestAsyncGeoprocessor74C8F6D0"
        },
        "RestApiId": {
          "Ref": "GpRestApi3C403820"
        }
      }
    },
    "WebSocketApi34BCF99B": {
      "Type": "AWS::ApiGatewayV2::Api",
      "Properties": {
        "Description": "Serves web socket requests for all.",
        "Name": "gp-all-socket",
        "ProtocolType": "WEBSOCKET",
        "RouteSelectionExpression": "$request.body.message"
      }
    },
    "WebSocketApiconnectRouteOnConnectIntegrationPermission63C86F11": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "GpSubscribeHandler254785F4",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "WebSocketApi34BCF99B"
              },
              "/*$connect"
            ]
          ]
        }
      }
    },
    "WebSocketApiconnectRouteOnConnectIntegration50849185": {
      "Type": "AWS::ApiGatewayV2::Integration",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "IntegrationType": "AWS_PROXY",
        "IntegrationUri": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
              {
                "Fn::GetAtt": [
                  "GpSubscribeHandler254785F4",
                  "Arn"
                ]
              },
              "/invocations"
            ]
          ]
        }
      }
    },
    "WebSocketApiconnectRoute846149DD": {
      "Type": "AWS::ApiGatewayV2::Route",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "AuthorizationType": "NONE",
        "RouteKey": "$connect",
        "Target": {
          "Fn::Join": [
            "",
            [
              "integrations/",
              {
                "Ref": "WebSocketApiconnectRouteOnConnectIntegration50849185"
              }
            ]
          ]
        }
      }
    },
    "WebSocketApidisconnectRouteOnDisconnectIntegrationPermission1BB6126D": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "GpUnsubscribeHandler4BC55849",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "WebSocketApi34BCF99B"
              },
              "/*$disconnect"
            ]
          ]
        }
      }
    },
    "WebSocketApidisconnectRouteOnDisconnectIntegrationB7DBE1EF": {
      "Type": "AWS::ApiGatewayV2::Integration",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "IntegrationType": "AWS_PROXY",
        "IntegrationUri": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
              {
                "Fn::GetAtt": [
                  "GpUnsubscribeHandler4BC55849",
                  "Arn"
                ]
              },
              "/invocations"
            ]
          ]
        }
      }
    },
    "WebSocketApidisconnectRouteC181A19C": {
      "Type": "AWS::ApiGatewayV2::Route",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "AuthorizationType": "NONE",
        "RouteKey": "$disconnect",
        "Target": {
          "Fn::Join": [
            "",
            [
              "integrations/",
              {
                "Ref": "WebSocketApidisconnectRouteOnDisconnectIntegrationB7DBE1EF"
              }
            ]
          ]
        }
      }
    },
    "WebSocketApisendmessageRouteOnSendIntegrationPermission3AF589A0": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "GpSendHandlerEE9E8D5C",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:us-west-1:",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "WebSocketApi34BCF99B"
              },
              "/*sendmessage"
            ]
          ]
        }
      }
    },
    "WebSocketApisendmessageRouteOnSendIntegration08A75349": {
      "Type": "AWS::ApiGatewayV2::Integration",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "IntegrationType": "AWS_PROXY",
        "IntegrationUri": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":apigateway:us-west-1:lambda:path/2015-03-31/functions/",
              {
                "Fn::GetAtt": [
                  "GpSendHandlerEE9E8D5C",
                  "Arn"
                ]
              },
              "/invocations"
            ]
          ]
        }
      }
    },
    "WebSocketApisendmessageRoute2AB2728D": {
      "Type": "AWS::ApiGatewayV2::Route",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "AuthorizationType": "NONE",
        "RouteKey": "sendmessage",
        "Target": {
          "Fn::Join": [
            "",
            [
              "integrations/",
              {
                "Ref": "WebSocketApisendmessageRouteOnSendIntegration08A75349"
              }
            ]
          ]
        }
      }
    },
    "GpSocketApiStageD8D179F5": {
      "Type": "AWS::ApiGatewayV2::Stage",
      "Properties": {
        "ApiId": {
          "Ref": "WebSocketApi34BCF99B"
        },
        "AutoDeploy": true,
        "DefaultRouteSettings": {
          "DataTraceEnabled": true,
          "LoggingLevel": "INFO",
          "ThrottlingBurstLimit": 500,
          "ThrottlingRateLimit": 1000
        },
        "StageName": "prod"
      }
    }
  },
  "Parameters": {
    "BootstrapVersion": {
      "Type": "AWS::SSM::Parameter::Value<String>",
      "Default": "/cdk-bootstrap/hnb659fds/version",
      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
    }
  },
  "Rules": {
    "CheckBootstrapVersion": {
      "Assertions": [
        {
          "Assert": {
            "Fn::Not": [
              {
                "Fn::Contains": [
                  [
                    "1",
                    "2",
                    "3",
                    "4",
                    "5"
                  ],
                  {
                    "Ref": "BootstrapVersion"
                  }
                ]
              }
            ]
          },
          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
        }
      ]
    }
  }
}
