ZORG 🔱 Ultimate DevOps · GPT アクション
Scrape API
API for structured data scraping.
POST /scrape/structuredScrapes structured data from a specified source.This endpoint allows you to scrape structured data from a given URL or other source.
元の API スキーマ
{
"openapi": "3.1.0",
"info": {
"title": "Scrape API",
"description": "API for structured data scraping.",
"version": "1.0.0"
},
"servers": [
{
"url": "https://api.example.com",
"description": "Main production server"
}
],
"paths": {
"/scrape/structured": {
"post": {
"operationId": "scrapeStructured",
"summary": "Scrapes structured data from a specified source.",
"description": "This endpoint allows you to scrape structured data from a given URL or other source.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The URL to scrape data from."
},
"options": {
"type": "object",
"description": "Optional settings for the scraping process."
}
}
}
}
}
},
"responses": {
"200": {
"description": "A JSON object containing the structured data scraped from the source.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates if the scraping was successful."
},
"data": {
"type": "object",
"description": "The structured data retrieved from the source.",
"properties": {
"title": {
"type": "string",
"description": "The title of the scraped page or resource."
},
"content": {
"type": "string",
"description": "The main content of the scraped page."
},
"additionalData": {
"type": "object",
"description": "Any additional structured data extracted.",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"required": [
"success",
"data"
]
}
}
}
}
}
}
}
}
}ArXiv Search
A GET-request based search operation for searching through arXiv.
GET /api/querysearchArxivSearches through arXiv for the given query.
元の API スキーマ
{
"info": {
"title": "ArXiv Search",
"description": "A GET-request based search operation for searching through arXiv.",
"version": "v1.0.0"
},
"servers": [
{
"url": "https://export.arxiv.org"
}
],
"paths": {
"/api/query": {
"get": {
"description": "Searches through arXiv for the given query.",
"operationId": "searchArxiv",
"parameters": [
{
"name": "search_query",
"in": "query",
"description": "The query to search for.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "start",
"in": "query",
"description": "The index of the first result to return.",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "max_results",
"in": "query",
"description": "The maximum number of results to return. Defaults to 10.",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "sortBy",
"in": "query",
"description": "The field to sort by.",
"required": false,
"schema": {
"type": "string",
"enum": [
"relevance",
"lastUpdatedDate",
"submittedDate"
]
}
},
{
"name": "sortOrder",
"in": "query",
"description": "The order to sort by.",
"required": false,
"schema": {
"type": "string",
"enum": [
"ascending",
"descending"
]
}
}
],
"deprecated": false
}
}
},
"components": {
"schemas": {}
}
}WeGPT API
A versatile plugin for browsing the web, building apps & games with just chat, and much more!
POST /scrape_urlBrowse the web via URL to load web page, or raw text file.Can use the `url` property in the request body to specify a string of search terms, or specify a direct URL to query or browse when performing research.
POST /rest_api_callMake a POST or GET http API call with optional headers and body.POST /generate_imageGenerates an image from the provided prompt.POST /create_checkout_sessionInitiates the creation of a Stripe checkout session.This endpoint facilitates the payment process by creating a Stripe checkout session and returns the checkout URL.
POST /get_wallet_profileRetrieve a comprehensive summary of an Ethereum wallet's key stats.POST /create_playgroundCreate a new p5js playground.Create a new p5js playground with the specified name and canvas size.
POST /edit_playgroundEdit the primary 'main.js' client-side JavaScript of an existing p5js playground.Explaining the changes you are about to make to the user is advisable *before* initiating the request.
POST /log_playgroundProvides access to the user's output and error logs for a given playground.This endpoint provides access to the user's output and error logs for a given playground.
POST /get_system_messageRetrieves **important** system messages for the user.System messages help the AI assistant fulfill the optimal user experience by providing important context for the environment, news about important system updates to Web Requests. System messages are meant to be read by the AI assistant, without input or requisite knowledge by the user.
POST /help_faqRetrieves FAQ information based on the category provided.The help_faq endpoint is designed to provide markdown-formatted FAQ information based on the category specified in the request payload.
POST /promptate_capture_leadOpt-in to Code Fellows academy sponsorship.Registers user for the Code Fellows academy promotion.
元の API スキーマ
{
"openapi": "3.1.0",
"info": {
"title": "WeGPT API",
"version": "1.1.8",
"description": "A versatile plugin for browsing the web, building apps & games with just chat, and much more!"
},
"servers": [
{
"url": "https://plugin.wegpt.ai",
"description": "WeGPT API"
}
],
"paths": {
"/scrape_url": {
"post": {
"tags": [
"Web Browser",
"Scrape",
"Search"
],
"summary": "Browse the web via URL to load web page, or raw text file.",
"description": "Can use the `url` property in the request body to specify a string of search terms, or specify a direct URL to query or browse when performing research.\n",
"operationId": "scrapeUrl",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "(Required) The URL to load or a string of search terms."
},
"token": {
"type": "string",
"description": "Relevant if a user has a Custom Intruction containing a token for image generation."
},
"page": {
"type": "integer",
"description": "The page / chunk number to retrieve from a previous Job_ID.",
"default": 1
},
"page_size": {
"type": "integer",
"description": "The maximum number of characters of content to return.",
"default": 10000
},
"is_search": {
"type": "boolean",
"description": "Indicates whether the request is a search query.",
"default": false
},
"num_results_to_scrape": {
"type": "integer",
"description": "Only relevant when 'is_search' is true.",
"default": 5
},
"job_id": {
"type": "string",
"description": "Job ID's generated server-side to represent a \"job.\""
},
"refresh_cache": {
"type": "boolean",
"description": "Indicates whether to refresh the cache for the content.",
"default": false
},
"no_strip": {
"type": "boolean",
"description": "Indicates whether to skip the stripping of HTML tags and clutter.",
"default": false
}
},
"required": [
"url"
]
}
}
}
},
"responses": {
"200": {
"description": "Request returned a response with content.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates whether the request was successful."
},
"content": {
"type": "object",
"description": "The content from the web page or search results."
},
"error": {
"type": "string",
"description": "An error message, if any."
},
"has_more": {
"type": "boolean",
"description": "Indicates whether there are more chunks/pages available."
},
"job_id": {
"type": "string",
"description": "Job ID's generated server-side to represent a \"job.\""
},
"cache_age": {
"type": "integer",
"description": "Indicates the age of the cache in seconds."
},
"page_context": {
"type": "string",
"description": "The context of the current page in relation to the total number of pages."
},
"notice": {
"type": "string",
"description": "A system message for the AI Assistant."
},
"instructions": {
"type": "string",
"description": "Instructions for the LLM / AI Assistant."
},
"helper_url": {
"type": "string",
"description": "A special URL to assist in rendering dynamically loaded content."
},
"target_url": {
"type": "string",
"description": "The URL of the dynamically loaded web page."
},
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **important** system message waiting.",
"default": false
}
}
}
}
}
}
}
}
},
"/rest_api_call": {
"post": {
"tags": [
"Rest API"
],
"summary": "Make a POST or GET http API call with optional headers and body.",
"operationId": "restApiCall",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "(Required) The HTTP/HTTPS endpoint to which the API call payload will be sent."
},
"http_method": {
"type": "string",
"description": "(Required) The HTTP method to use for the request.",
"default": "POST"
},
"chunk": {
"type": "integer",
"description": "The chunk of the response to return."
},
"req_id": {
"type": "string",
"description": "The unique request ID of a prior request."
},
"payload_headers": {
"type": "string",
"description": "A string representing the headers to be included in the API call."
},
"payload_body": {
"type": "string",
"description": "A string representing the body of the API request."
}
},
"required": [
"url",
"http_method"
]
}
}
}
},
"responses": {
"200": {
"description": "The HTTP status code and response body from the API request.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates whether the API call was successful."
},
"content": {
"type": "object",
"description": "The body of the response from the API request."
},
"chunk": {
"type": "string",
"description": "The chunk number of the response."
},
"has_more": {
"type": "boolean",
"description": "Indicates whether there are more chunks available."
},
"req_id": {
"type": "string",
"description": "The unique request ID for this request."
},
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"error": {
"type": "string",
"description": "An error message, if any."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **important** system message waiting.",
"default": false
}
}
}
}
}
}
}
}
},
"/generate_image": {
"post": {
"summary": "Generates an image from the provided prompt.",
"operationId": "generateImage",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "(Required) The prompt based on which the image will be generated."
},
"token": {
"type": "string",
"description": "The token for paying users."
}
},
"required": [
"prompt"
]
}
}
}
},
"responses": {
"200": {
"description": "Image generated successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates whether the image generation was successful."
},
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"image_url": {
"type": "string",
"description": "URL of the generated image."
},
"instructions": {
"type": "string",
"description": "Instructions for rendering the image."
},
"error": {
"type": "string",
"description": "An error message, if any."
},
"remaining_credits": {
"type": "integer",
"description": "The number of image generation credits remaining for the user."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **important** system message waiting.",
"default": false
}
}
}
}
}
}
}
}
},
"/create_checkout_session": {
"post": {
"tags": [
"checkout",
"payment",
"stripe",
"transaction"
],
"summary": "Initiates the creation of a Stripe checkout session.",
"description": "This endpoint facilitates the payment process by creating a Stripe checkout session and returns the checkout URL.\n",
"operationId": "createCheckoutSession",
"responses": {
"200": {
"description": "The checkout session was successfully created.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The URL to proceed with the checkout."
},
"instructions": {
"type": "string",
"description": "Custom instructions related to the payment."
},
"token": {
"type": "string",
"description": "A unique token the user must include in subsequent requests."
}
}
}
}
}
}
}
}
},
"/get_wallet_profile": {
"post": {
"tags": [
"Wallet"
],
"summary": "Retrieve a comprehensive summary of an Ethereum wallet's key stats.",
"operationId": "getWalletProfile",
"requestBody": {
"description": "Etherscan API key and Ethereum address are required.",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"etherscan_api_key": {
"type": "string",
"description": "The API key provided by Etherscan."
},
"ethereum_address": {
"type": "string",
"description": "The Ethereum address of the wallet."
},
"req_id": {
"type": "string",
"description": "The unique request ID of a prior request."
},
"chunk": {
"type": "integer",
"description": "The chunk number of the response to return."
}
},
"required": [
"ethereum_address"
]
}
}
}
},
"responses": {
"200": {
"description": "The profile / summary data of the specified Ethereum wallet.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates whether the request was successful."
},
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"content": {
"type": "object",
"description": "The profile data of the Ethereum wallet."
},
"req_id": {
"type": "string",
"description": "The unique request ID for this request."
},
"chunk": {
"type": "string",
"description": "The context of the current chunk in relation to the total number of chunks."
},
"cache_age": {
"type": "integer",
"description": "Indicates the age of the cache in seconds."
},
"has_more": {
"type": "boolean",
"description": "Indicates whether there are more chunks available."
},
"error": {
"type": "string",
"description": "An error message, if any occurred while building the wallet profile."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **importantsystem message waiting.",
"default": false
}
}
}
}
}
}
}
}
},
"/create_playground": {
"post": {
"tags": [
"playground",
"game",
"app"
],
"summary": "Create a new p5js playground.",
"description": "Create a new p5js playground with the specified name and canvas size.\n",
"operationId": "createPlayground",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the new playground to be created or recovered."
},
"playground_id": {
"type": "string",
"description": "The unique ID of the playground you are seeking to recover."
},
"recover_playground": {
"type": "boolean",
"description": "If set to true, Web Requests will try to find and return the source of this 'playground_id'.",
"default": false
},
"canvas": {
"type": "array",
"description": "The size of the canvas (optional), represented as a tuple of width and height.",
"items": {
"type": "integer"
},
"minItems": 2,
"maxItems": 2,
"default": [
640,
480
]
}
},
"required": [
"name"
]
}
}
}
},
"responses": {
"200": {
"description": "The playground request was successfully handled.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"success": {
"type": "boolean",
"description": "Indicates whether the Request/Response was successful."
},
"playground_id": {
"type": "string",
"description": "The unique ID of the playground."
},
"total_lines": {
"type": "integer",
"description": "The total number of lines of code in the latest revision of the source code for this playground's main.js."
},
"source": {
"type": "array",
"description": "This is the current state of your code inside main.js.",
"items": {
"type": "string",
"description": "Each item represents a line of code in main.js of the p5js codebase."
}
},
"name": {
"type": "string",
"description": "The name of the playground."
},
"url": {
"type": "string",
"description": "This is the URL of this playground's preview page."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **important** system message waiting for you.",
"default": false
}
}
}
}
}
}
}
}
},
"/edit_playground": {
"post": {
"tags": [
"playground",
"game",
"app"
],
"summary": "Edit the primary 'main.js' client-side JavaScript of an existing p5js playground.",
"description": "Explaining the changes you are about to make to the user is advisable *before* initiating the request.\n",
"operationId": "editPlayground",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"playground_id": {
"type": "string",
"description": "The unique ID of the playground."
},
"name": {
"type": "string",
"description": "The name of the playground to be edited."
},
"revert": {
"type": "boolean",
"description": "If set to true, Web Requests will try to revert the playground to a previous state.",
"default": false
},
"actions": {
"type": "array",
"description": "A list of actions, line numbers, and new code snippets to apply on the playground's codebase, such as insertions, replacements, or deletions.\n",
"items": {
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "The intended action (e.g., 'insert', 'replace', 'delete')."
},
"line": {
"type": "integer",
"description": "The line number for which to insert a block (or single line) of code."
},
"start_line": {
"type": "integer",
"description": "The starting line number REQUIRED for replace and delete actions."
},
"end_line": {
"type": "integer",
"description": "The ending line number REQUIRED for replace and delete actions."
},
"code": {
"type": "array",
"description": "An array representation of the code to insert or use as a replacement (for insert and replace actions).\n",
"items": {
"type": "string",
"description": "Each item represents a line of code in main.js of the p5js codebase."
}
}
}
}
},
"pro_mode": {
"type": "boolean",
"description": "Flag to indicate if this request to edit_playground is intended for elevated Web Request Pro treatment.",
"default": false
},
"change_id": {
"type": "string",
"description": "The change ID for which you are collaborating on with Web Requests Pro."
},
"changelog": {
"type": "string",
"description": "The context or explanation for the actions being submitted."
},
"add_reply": {
"type": "string",
"description": "An additional reply to add context for Web Requests Pro's AI Assistant."
},
"preview_commit": {
"type": "boolean",
"description": "Flag to indicate if the changes that Web Requests Pro suggested should be staged for preview.",
"default": false
},
"commit": {
"type": "boolean",
"description": "Flag to indicate if the preview commit should be written to disk.",
"default": false
},
"abandon": {
"type": "boolean",
"description": "Flag to indicate you wish to discard the currently staged change."
}
}
}
}
}
},
"responses": {
"200": {
"description": "The playground edit attempt was processed.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates whether the playground edit attempt was successful."
},
"playground_id": {
"type": "string",
"description": "The unique ID of the playground."
},
"name": {
"type": "string",
"description": "The name of the playground."
},
"url": {
"type": "string",
"description": "This is the URL of this playground's preview page."
},
"special_instructions": {
"type": "string",
"description": "Important context for the LLM that will benefit the user experience."
},
"total_lines": {
"type": "integer",
"description": "The total number of lines of code in the latest revision of the source code for this playground's main.js."
},
"timestamp": {
"type": "string",
"description": "The timestamp of this event or change to the playground."
},
"source": {
"type": "array",
"description": "This is the current state of your code inside main.js.",
"items": {
"type": "string",
"description": "Each item represents a line of code in main.js of the p5js codebase."
}
},
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"error": {
"type": "string",
"description": "This error is a system message."
},
"check_logs": {
"type": "string",
"description": "Provides critical context into when and how to check the user's logs."
},
"change_id": {
"type": "string",
"description": "The change ID when the playground is in pro mode and changes are being iterated on or staged."
},
"changelog": {
"type": "string",
"description": "The changelog for the changes that were made to the playground."
},
"pro_mode": {
"type": "boolean",
"description": "Flag to indicate if the playground response is from Web Requests Pro."
},
"staged_commit": {
"type": "array",
"description": "This is the staged code prepared to replace main.js.",
"items": {
"type": "string",
"description": "Each item represents a line of code for the main.js p5js codebase."
}
},
"analysis": {
"type": "string",
"description": "The analysis from the Web Requests Pro coding assistant."
},
"reverting_to": {
"type": "array",
"description": "This is the state you are about to revert to should you commit.",
"items": {
"type": "string",
"description": "Each item represents a line of code in main.js of the p5js codebase."
}
},
"reversion_changelog": {
"type": "string",
"description": "The changelog for the reversion you are about to commit."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **important** system message waiting for you.",
"default": false
}
}
}
}
}
}
}
}
},
"/log_playground": {
"post": {
"tags": [
"playground",
"log",
"debug",
"logfile"
],
"summary": "Provides access to the user's output and error logs for a given playground.",
"description": "This endpoint provides access to the user's output and error logs for a given playground.\n",
"operationId": "logPlayground",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"playground_id": {
"type": "string",
"description": "The unique ID of the playground."
},
"name": {
"type": "string",
"description": "The name of the playground."
},
"full_log": {
"type": "boolean",
"description": "If the shorter more localized context is not enough, this will provide the full log of the user's code execution.",
"default": false
},
"reason": {
"type": "string",
"description": "This is the reason why checking the logs is necessary."
}
},
"required": [
"playground_id",
"name",
"reason"
]
}
}
}
},
"responses": {
"200": {
"description": "The playground's log was successfully queried.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indicates whether the playground was successfully logged and checked."
},
"playground_id": {
"type": "string",
"description": "The unique ID of the playground."
},
"name": {
"type": "string",
"description": "The name of the playground."
},
"content": {
"type": "array",
"description": "The contents of the log file for this playground in chronological order.",
"items": {
"type": "string",
"description": "Each line represents a line of the logfile.log which contains errors, info, and output log lines."
}
},
"source_review": {
"type": "array",
"description": "This is the current state of your code inside main.js.",
"items": {
"type": "string",
"description": "Each item represents a line of code in main.js of the p5js codebase."
}
},
"instructions": {
"type": "string",
"description": "Important context for the LLM that will benefit the user experience."
},
"alert": {
"type": "string",
"description": "An IMPORTANT system message."
},
"error": {
"type": "string",
"description": "This error is a system message."
},
"unread_system_message": {
"type": "boolean",
"description": "Indicates whether there is an **important** system message waiting for you.",
"default": false
}
}
}
}
}
}
}
}
},
"/get_system_message": {
"post": {
"tags": [
"unread",
"alerts",
"system",
"messages"
],
"summary": "Retrieves **important** system messages for the user.",
"description": "System messages help the AI assistant fulfill the optimal user experience by providing important context for the environment, news about important system updates to Web Requests. System messages are meant to be read by the AI assistant, without input or requisite knowledge by the user.\n",
"operationId": "getSystemMessage",
"responses": {
"200": {
"description": "Retrieved a system message for the user.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The message intended for the user."
},
"instructions": {
"type": "string",
"description": "Additional instructions for the AI assistant that may help fulfill the optimal user experience."
},
"sponsored": {
"type": "boolean",
"description": "Indicates whether this message is sponsored by a third party."
}
}
}
}
}
},
"204": {
"description": "No system messages are available for the user at this time."
},
"400": {
"description": "The request was malformed.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "A string that contains a more specific error context."
}
}
}
}
}
}
}
}
},
"/help_faq": {
"post": {
"tags": [
"faq",
"information",
"help"
],
"summary": "Retrieves FAQ information based on the category provided.",
"description": "The help_faq endpoint is designed to provide markdown-formatted FAQ information based on the category specified in the request payload.\n",
"operationId": "helpFaq",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "The category for which FAQ information is requested.",
"enum": [
"What can Web Requests do?",
"What is Web Requests Pro?",
"Image Generation?"
]
}
},
"required": [
"category"
]
}
}
}
},
"responses": {
"200": {
"description": "Successfully retrieved FAQ information.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The markdown-formatted message containing FAQ information."
},
"instructions": {
"type": "string",
"description": "Additional instructions for the AI assistant that will help fulfill the optimal user experience."
}
}
}
}
}
},
"400": {
"description": "The request was malformed or the category is unsupported.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string",
"description": "A string that contains a more specific error context."
}
}
}
}
}
}
}
}
},
"/promptate_capture_lead": {
"post": {
"tags": [
"promptate"
],
"summary": "Opt-in to Code Fellows academy sponsorship.",
"description": "Registers user for the Code Fellows academy promotion.",
"operationId": "promptateCaptureLead",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"name",
"phone",
"email"
]
}
}
}
},
"responses": {
"200": {
"description": "Successfully enrolled.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"content": {
"type": "string",
"description": "Enrollment content"
}
}
}
}
}
}
}
}
}
}
}