この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

入力およびバイナリファイルのアップロードの例

入力を使用して HTTP POST、PATCH、PUT 要求を実行し、バイナリファイルのアップロードについて詳しく説明します。

入力での POST、PATCH、または PUT の使用

HTTP POST、PATCH、および PUT メソッドを使用して要求を行うとき、要求パラメータまたはリクエストボディを使用できます。リクエストボディには、JSON または XML を含めることができます。リソース固有の要求パラメータとリクエストボディを渡すと、要求パラメータが無視されます。リソースに固有でない要求パラメータ (ベアラートークン URL 内のパラメータや _HttpMethod パラメータなど) はリクエストボディと共に処理されます。ベアラートークンパラメータはそのまま使用します。パラメータの追加や削除はしないでください。

要求パラメータを使用して要求を送信するには、値 application/x-www-form-urlencoded を指定した Content-Type ヘッダー項目を使用します。

リクエストボディを使用して要求を送信するには、Content-Type ヘッダー項目と Accept ヘッダー項目に次のいずれかの値を使用します。
  • application/json
  • application/xml

バイナリファイルのアップロード

最大 2 GB (ヘッダーを含める) のバイナリファイルまたは外部リポジトリの最大 75 MB のバイナリファイルをアップロードするには、マルチパート/フォームデータ要求のボディパートとしてバイナリファイルを送信します。コメントのテキストは、同じマルチパート/フォームデータ要求の JSON または XML リッチ入力ボディパートとして送信できます (ただし��投稿のテキストは送信できません)。または、その情報を要求パラメータで送信するように選択することもできます。リッチ入力リクエストボディと要求パラメータの両方を渡すと、要求パラメータは無視されます。

バージョン 36.0 以降では、フィード投稿の作成とバイナリファイルのアップロードを同じ要求で行うことはできません。最初にファイルを Salesforce にアップロードしてから、ファイル ID を使用して 1 つ以上のファイルをフィード投稿に添付します。

重要

マルチパート/フォームデータ要求を作成するには、要求のヘッダーで Content-Type HTTP ヘッダーを multipart/form-data に設定します。

HTTP ヘッダーについての詳細は、W3C フォームコンテンツタイプと、マルチパート/フォームデータインターネットメディアタイプが定義されている 「RFC 2388」 を参照してください。

次の表では、マルチパート/フォームデータ要求のリッチ入力ボディパートに必要な HTTP ヘッダーとパラメータを説明します。

リッチ入力ボディパートの HTTP ヘッダー ヘッダー値とパラメータ 説明
Content-Disposition form-data; name="json"

form-data; name="xml"

投稿またはコメントのリクエストボディ。

JSON の場合は、name の値に "json" を使用します。

XML の場合は、name の値に "xml" を使用します。

Content-Type application/json; charset=UTF-8

application/xml; charset=UTF-8

リクエストボディのデータ形式と文字セット。

JSON の場合、値は application/json にする必要があります。

XML の場合、値は application/xml にする必要があります。

Web ブラウザは通常、非バイナリパート (リッチ入力ボディなど) に独自の Content-Type があると、マルチパートの要求を実行することができません。この問題を回避するには、特定の Content-Disposition name を指定して、Salesforce がリッチ入力パートの Content-Type を読み取れるようにします(リッチ入力ボディに Content-Type を指定する必要はありません)。

ヒント

次の表では、Web ブラウザからのマルチパート/フォームデータ要求のリッチ入力ボディパートに必要な HTTP ヘッダーとパラメータについて説明します。
Web ブラウザからのリッチ入力ボディパートの HTTP ヘッダー ヘッダー値とパラメータ 説明
Content-Disposition form-data; name="feedElement"

form-data; name="comment"

form-data; name="photo"

form-data; name="file"

バイナリファイルを含むフィード要素を投稿するには、name の値を "feedElement" にする必要があります (バージョン 35.0 以前の場合)。

バイナリファイルを含むコメントを投稿するには、name の値を "comment" にする必要があります。

ユーザまたはグループの写真をアップロードするには、name の値を "photo" にする必要があります。

[ファイル] ホームまたは外部リポジトリにファイルをアップロードするには、name の値を "file" にする必要があります。

次の表では、マルチパート/フォームデータ要求のバイナリアップロードボディパートに必要な HTTP ヘッダーとパラメータを説明します。

バイナリアップロードボディパートの HTTP ヘッダー ヘッダー値とパラメータ 説明
Content-Disposition form-data; name="feedElementFileUpload"; filename=string

form-data; name=name="feedElementFileUpload"; filename=string

form-data; name="fileUpload" filename=string

form-data; name="fileData" filename=string

バイナリファイルを含むフィード要素を投稿するには、name の値を "feedElementFileUpload" にする必要があります (バージョン 35.0 以前の場合)。

バイナリファイルを含むコメントを投稿するには、name の値を "feedElementFileUpload" にする必要があります。

ユーザまたはグループの写真をアップロードするには、name の値を "fileUpload" にする必要があります。

[ファイル] ホームにファイルをアップロードする、または外部リポジトリにファイルをアップロードするには、name の値を "fileData" にする必要があります。

filename パラメータと値を指定します。ただし、Salesforce は、filename パラメータの値ではなく、File Inputtitle プロパティの値または Files Connect Item Input のメタデータの値をファイル名として使用します。

メモ

Content-Type application/octet-stream; charset=ISO-8859-1 バイナリファイルのメディアタイプと文字セット。

空白と改行 (CRLF) は重要です。たとえば、次の行では空白が必要です: Content-Disposition: form-data; name="feedItemFileUpload"; title="2012_q1_review.ppt"。空白ではなく CRLF を使用すると、エラーが返されます。

メモ

バイナリファイルを含むフィード要素の投稿 (バージョン 35.0 以前)

バージョン 36.0 以降では、フィード投稿の作成とバイナリファイルのアップロードを同じ要求で行うことはできません。最初にファイルを Salesforce にアップロードしてから、ファイル ID を使用して 1 つ以上のファイルをフィード投稿に添付します。

重要

次の例では、/chatter/feed-elements リソースを使用して新しいフィード項目 (フィード要素の種類の 1 つ) を投稿し、バイナリファイルをアップロードして新しいフィード項目に添付します。次の例では cURL を使用します。
1curl -H "X-PrettyPrint: 1" -F 'json={ "body":{ "messageSegments":[ { "type":"Text", "text":"Please accept this receipt." } ] }, 
2"capabilities":{ "content":{ "description":"Receipt for expenses", "title":"receipt.pdf" } }, "feedElementType":"FeedItem", "subjectId":"005RR000000DmOb" };
3type=application/json' -F "feedElementFileUpload=@receipt.pdf;type=application/octet-stream"
4 -X POST https://instance_name/services/data/v35.0/chatter/feed-elements 
5-H 'Authorization: OAuth 00DRR0000000N0g!...' --insecure
以下に、上記の例を、リクエストボディパートが確認できる形式に変えた例を示します。
1POST /services/data/v35.0/chatter/feed-elements HTTP/1.1
2Authorization: OAuth 00DRR0000000N0g!...
3User-Agent: Jakarta Commons-HttpClient/3.0.1
4Host: instance_name
5Content-Length: 845
6Content-Type: multipart/form-data; boundary=a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
7Accept: application/json
8
9--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
10Content-Disposition: form-data; name="json"
11Content-Type: application/json; charset=UTF-8
12
13{
14   "body":{
15      "messageSegments":[
16         {
17            "type":"Text",
18            "text":"Please accept this receipt."
19         }
20      ]
21   },
22   "capabilities":{
23      "content":{
24         "description":"Receipt for expenses",
25         "title":"receipt.pdf"
26      }
27   },
28   "feedElementType":"FeedItem",
29   "subjectId":"005RR000000DmOb"
30}
31
32--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
33Content-Disposition: form-data; name="feedElementFileUpload"; filename="receipt.pdf"
34Content-Type: application/octet-stream; charset=ISO-8859-1
35
36...contents of receipt.pdf...
37
38--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq--
バイナリファイルを含むフィード要素の一括投稿 (バージョン 35.0 以前)

バージョン 36.0 以降では、フィード投稿の作成とバイナリファイルのアップロードを同じ要求で行うことはできません。最初にファイルを Salesforce にアップロードしてから、ファイル ID を使用して 1 つ以上のファイルをフィード投稿に添付します。

重要

次の例では、/chatter/feed-elements/batch リソースを使用してフィード要素を一括投稿し、2 つのバイナリファイルをアップロードして、バッチ内のフィード要素に添付します。リクエストボディにバイナリパートに関する情報を含めます。次の例では cURL を使用します。
1curl -H "X-PrettyPrint: 1" -F 'json={"inputs":[{"binaryPartNames":["bin1"], "richInput":{"subjectId":"me","body":{
2"messageSegments":[{"type":"Text","text":"Please accept this receipt"}]},"capabilities": {"content" : {"description": "Receipt for expenses", "title":"receipt.pdf"}},"feedElementType":"FeedItem"}},
3{"binaryPartNames":["bin2"],"richInput":{"subjectId":"me","body":{"messageSegments":[{"type":"Text","text":"Post Number 2"}]},
4"capabilities": {"content" : {"description": "Receipt for expenses", "title":"receipt2.pdf"}},"feedElementType":"FeedItem"}}]};type=application/json' 
5-F "bin1=@/Users/jsmith/Desktop/receipt.pdf;type=application/octet-stream" -F "bin2=@/Users/jsmith/Desktop/receipt2.pdf;type=application/octet-stream" 
6-X POST https://instance_name/services/data/v35.0/chatter/feed-elements/batch 
7-H 'Authorization: OAuth 00DD00000007HoR44QATPNzhzYEJBfU' --insecure
以下に、上記の例を、リクエストボディパートが確認できる形式に変えた例を示します。
1POST /services/data/v35.0/chatter/feed-elements/batch HTTP/1.1
2Authorization: OAuth 00DRR0000000N0g!...
3User-Agent: Jakarta Commons-HttpClient/3.0.1
4Host: instance_name
5Content-Length: 845
6Content-Type: multipart/form-data; boundary=a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
7Accept: application/json
8
9--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
10Content-Disposition: form-data; name="json"
11Content-Type: application/json; charset=UTF-8
12
13{
14  "inputs": [
15    {
16      "binaryPartNames": [
17        "bin1"
18      ],
19      "richInput": {
20        "subjectId": "me",
21        "body": {
22          "messageSegments": [
23            {
24              "type": "Text",
25              "text": "Please accept this receipt"
26            }
27          ]
28        },
29        "capabilities": {
30          "content": {
31            "description": "Receipt for expenses",
32            "title": "receipt.pdf"
33          }
34        },
35        "feedElementType": "FeedItem"
36      }
37    },
38    {
39      "binaryPartNames": [
40        "bin2"
41      ],
42      "richInput": {
43        "subjectId": "me",
44        "body": {
45          "messageSegments": [
46            {
47              "type": "Text",
48              "text": "Post Number 2"
49            }
50          ]
51        },
52        "capabilities": {
53          "content": {
54            "description": "Receipt for expenses",
55            "title": "receipt2.pdf"
56          }
57        },
58        "feedElementType": "FeedItem"
59      }
60    }
61  ]
62}
63
64--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
65Content-Disposition: form-data; name="bin1"; filename="receipt.pdf"
66Content-Type: application/octet-stream; charset=ISO-8859-1
67
68...contents of receipt.pdf...
69
70
71--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
72Content-Disposition: form-data; name="bin2"; filename="receipt2.pdf"
73Content-Type: application/octet-stream; charset=ISO-8859-1
74
75...contents of receipt2.pdf...
76
77--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq--

binaryPartNames プロパティ内のバイナリパート名は、バイナリリクエストパートの name プロパティ内のバイナリパート名と一致する必要があります。

メモ

バイナリファイルを含むコメントの投稿
次の例では、cURL を使用してフィード項目にコメントを投稿し、バイナリ添付ファイルをアップロードします。
1curl -H "X-PrettyPrint: 1" -F 'json={ "body":{ "messageSegments":[ { "type":"Text", "text":"Here's another receipt." } ] }, "capabilities":{ "content":{ "title":"receipt2" } } };
2type=application/json' -F "feedElementFileUpload=@receipt2.txt;type=application/octet-stream" 
3-X POST https://instance_name/services/data/v43.0/chatter/feed-elements/0D5RR0000004Grx/capabilities/comments/items 
4-H 'Authorization: OAuth 00DRR0000000N0g!ARoAQB...' --insecure
以下に、上記の例を、リクエストボディパートが確認できる形式に変えた例を示します。
1POST /services/data/v43.0/chatter/feed-elements/0D5RR0000004Grx/capabilities/comments/items  HTTP/1.1
2Authorization: OAuth 00DD0000000Jhd2!AQIAQC.lh4qTQcBhOPm4TZom5IaOOZLVPVK4wI_rPYJvmE8r2VW8XA.
3OZ7S29JEM_7Ctq1lst2dzoV.owisJc0KacUbDxyae
4Accept: application/json
5User-Agent: Jakarta Commons-HttpClient/3.0.1
6Host: instance_name
7Content-Length: 978
8Content-Type: multipart/form-data; boundary=F9jBDELnfBLAVmLNbnLIYibT5Icp0h3VJ7mkI
9
10--F9jBDELnfBLAVmLNbnLIYibT5Icp0h3VJ7mkI
11Content-Disposition: form-data; name="json"
12Content-Type: application/json; charset=UTF-8
13
14{
15   "body":{
16      "messageSegments":[
17         {
18            "type":"Text",
19            "text":"Here's another receipt."
20         }
21      ]
22   },
23   "capabilities":{
24      "content":{
25         "title":"receipt2"
26      }
27   }
28}
29
30--F9jBDELnfBLAVmLNbnLIYibT5Icp0h3VJ7mkI
31Content-Disposition: form-data; name="feedElementFileUpload"; filename="receipt2.txt"
32Content-Type: application/octet-stream; charset=ISO-8859-1
33
34...contents of receipt2.txt...
35
36--F9jBDELnfBLAVmLNbnLIYibT5Icp0h3VJ7mkI--
バイナリファイルを含む複数のコメントの投稿
この例は、2 つのサブ要求が含まれる https://instance_name/services/data/v43.0/connect/batch への汎用バッチ要求です。各サブ要求はフィード項目にコメントし、バイナリファイルをコメントにアップロードします。
richInput プロパティには、各サブ要求のリクエストボディを含めます。
また、binaryPartName および binaryPartNameAlias プロパティには、バイナリパートに関する情報を含めます。
次に cURL の例を示します。
1curl -H "X-PrettyPrint: 1" -F 'json={ "haltOnError":true, "batchRequests":[ { "url":"/v33.0/chatter/feed-elements/0D5D0000000YG0N/capabilities/comments/items", 
2"method":"Post", "binaryPartName":"binaryPart1", "binaryPartNameAlias":"feedElementFileUpload", "richInput":{ "body":{ "messageSegments":[ { "type":"Text", "text":"Check out this file, it may help." } ] },
3 "capabilities":{ "content":{ "title":"Presentation1.txt" } } } }, { "url":"/v33.0/chatter/feed-elements/0D5D0000000YG0M/capabilities/comments/items", 
4"method":"Post", "binaryPartName":"binaryPart2", "binaryPartNameAlias":"feedElementFileUpload", "richInput":{ "body":{ "messageSegments":[ { "type":"Text", "text":"Check out this file, it may help." } ] },
5 "capabilities":{ "content":{ "title":"Presentation2.txt" } } } } ] };type=application/json' -F "binaryPart1=@/Users/jbleyle/Desktop/Presentation1.txt;type=application/octet-stream" 
6-F "binaryPart2=@/Users/jbleyle/Desktop/Presentation2.txt;type=application/octet-stream" 
7-X POST https://instance_name/services/data/v43.0/connect/batch 
8-H 'Authorization: OAuth 00DD00000007HoR!...' --insecure
次は、マルチパート/フォームデータリクエストボディです。
1https://instance_name/services/data/v43.0/connect/batch
2
3Authorization: OAuth 00DD0000000Jhd2!...
4Accept: application/json
5Host: instance_name
6Content-Type: multipart/form-data; boundary=123123
7
8--123123
9Content-Disposition: form-data; name="json"
10Content-Type: application/json
11
12{
13   "haltOnError":true,
14   "batchRequests":[
15      {
16         "url":"/v43.0/chatter/feed-elements/0D5D0000000YG0D/capabilities/comments/items",
17         "method":"Post",
18         "binaryPartName":"binaryPart1",
19         "binaryPartNameAlias":"feedElementFileUpload",
20         "richInput":{
21            "body":{
22               "messageSegments":[
23                  {
24                     "type":"Text",
25                     "text":"Check out this file, it may help."
26                  }
27               ]
28            },
29            "capabilities":{
30               "content":{
31                  "title":"Presentation1.txt"
32               }
33            }
34         }
35      },
36      {
37         "url":"/v43.0/chatter/feed-elements/0D5D0000000YG0H/capabilities/comments/items",
38         "method":"Post",
39         "binaryPartName":"binaryPart2",
40         "binaryPartNameAlias":"feedElementFileUpload",
41         "richInput":{
42            "body":{
43               "messageSegments":[
44                  {
45                     "type":"Text",
46                     "text":"Check out this file, it may help."
47                  }
48               ]
49            },
50            "capabilities":{
51               "content":{
52                  "title":"Presentation2.txt"
53               }
54            }
55         }
56      }
57   ]
58}
59
60
61--123123
62Content-Disposition: form-data; name="binaryPart1"; filename="Presentation1.txt"
63Content-Type: application/octet-stream; charset=ISO-8859-1
64Content-Transfer-Encoding: binary
65
66This is the content of file 1
67--123123
68Content-Disposition: form-data; name="binaryPart2"; filename="Presentation2.txt"
69Content-Type: application/octet-stream; charset=ISO-8859-1
70Content-Transfer-Encoding: binary
71
72This is the content of file 2
73--123123--
ユーザの写真のアップロードおよびトリミング
次の例では、cURL を使用してユーザプロファイルの写真をアップロードし、トリミングします。
1curl -H "X-PrettyPrint: 1" -F 'json={"cropX": "0", "cropY": "0", "cropSize": "200"};type=application/json'
2 -F "fileUpload=@myPhoto.jpg;type=application/octet-stream" 
3-X POST https://instance_name/services/data/v43.0/chatter/users/me/photo
4 -H 'Authorization: OAuth 00DRR0000000N0g!ARoAQFRi_gBqZhajAX22MNuLrrE2Xk...'
5 --insecure
以下に、上記の例を、リクエストボディパートが確認できる形式に変えた例を示します。
1POST /services/data/v43.0/chatter/users/me/photo HTTP/1.1
2Authorization: OAuth 00DD0000000Jhd2!AQIAQC.lh4qTQcBhOPm4TZom5IaOOZLVPVK4wI_rPYJvmE8r2VW8XA.
3OZ7S29JEM_7Ctq1lst2dzoV.owisJc0KacUbDxyae
4User-Agent: Jakarta Commons-HttpClient/3.0.1
5Host: instance_name
6Content-Length: 543
7Content-Type: multipart/form-data; boundary=a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
8Accept: application/json
9
10--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
11Content-Type: application/json; charset=UTF-8
12Content-Disposition: form-data; name="json"
13
14{
15   "cropX" : "0",
16   "cropY" : "0",
17   "cropSize" : "200"
18}
19
20--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
21Content-Disposition: form-data; name="fileUpload"; filename="myPhoto.jpg"
22Content-Type: application/octet-stream; charset=ISO-8859-1
23
24...contents of myPhoto.jpg...
25
26--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq--
[ファイル] ホームへのファイルのアップロード
次の例では、cURL を使用してファイルを [ファイル] ホームにアップロードします。
1curl -H "X-PrettyPrint: 1" -F 'json={"title":"BoatPrices"};type=application/json' 
2-F "fileData=@BoatPrices.pdf;type=application/octet-stream" 
3-X POST https://instance_name/services/data/v43.0/connect/files/users/me 
4-H 'Authorization: OAuth 00DRR0000000N0g!...' --insecure
以下に、上記の例を、リクエストボディパートが確認できる形式に変えた例を示します。
1POST /services/data/v43.0/connect/files/users/me
2
3Authorization: OAuth 00DD0000000Jhd2!AQIAQC.lh4qTQcBhOPm4TZom5IaOOZLVPVK4wI_rPYJvmE8r2VW8XA.
4OZ7S29JEM_7Ctq1lst2dzoV.owisJc0KacUbDxyae
5User-Agent: Jakarta Commons-HttpClient/3.0.1
6Host: instance_name
7Content-Length: 489
8Content-Type: multipart/form-data; boundary=a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
9Accept: application/json
10
11--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
12Content-Type: application/json; charset=UTF-8
13Content-Disposition: form-data; name="json"
14
15{
16   "title":"BoatPrices"
17}
18
19--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
20Content-Disposition: form-data; name="fileData"; filename="BoatPrices.txt"
21Content-Type: application/octet-stream; charset=ISO-8859-1
22
23...contents of BoatPrices.txt...
24
25--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq--
外部リポジトリへのファイルのアップロード
次の例では、cURL を使用してファイルを外部リポジトリにアップロードします。
1curl -H "X-PrettyPrint: 1" -F 'json={"itemTypeId" : "file","fields" : [{"name" : "name","value" : "Content Hub Simple Create Specs"},
2{"name" : "description","value" : "Document explaining the various connect api endpoints required for simple create"}]};type=application/json' 
3-F "fileData=@BoatPrices.pdf;type=application/text/plain" 
4-X POST https://instance_name/services/data/v43.0/connect/content-hub/repositories/
50XCxx000000002CGAQ/folders/folder:0Bz0nXuFg43SiflFNdFNIaUJrY2hQaHVIVHMxYVpHd2ZHeXphTW83TElzcE84RUJ2Q3Q4Rm8/
6items 
7-H 'Authorization: OAuth 00DRR0000000N0g!...' --insecure
以下に、上記の例を、リクエストボディパートが確認できる形式に変えた例を示します。
1POST /services/data/v43.0/connect/content-hub/repositories/0XCxx000000002CGAQ/
2folders/folder:0Bz0nXuFg43SiflFNdFNIaUJrY2hQaHVIVHMxYVpHd2ZHeXphTW83TElzcE84RUJ2Q3Q4Rm8/items
3
4Authorization: OAuth 00DD0000000Jhd2!AQIAQC.lh4qTQcBhOPm4TZom5IaOOZLVPVK4wI_rPYJvmE8r2VW8XA.
5OZ7S29JEM_7Ctq1lst2dzoV.owisJc0KacUbDxyae
6User-Agent: Jakarta Commons-HttpClient/3.0.1
7Host: instance_name
8Content-Length: 489
9Content-Type: multipart/form-data; boundary=a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
10Accept: application/json
11
12--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
13Content-Type: application/json
14Content-Disposition: form-data; name="json"
15
16{
17   "itemTypeId" : "file",
18   "fields" : [
19   {
20      "name" : "name",
21      "value" : "Items Sharepoint 012.png"
22   },
23   {
24      "name" : "description",
25      "value" : "This is a test file"
26   }]
27}
28
29--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq
30Content-Disposition: form-data; name="fileData"; filename="items_Sharepoint_012.png"
31Content-Type: image/png
32
33...PNG...
34
35--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq--