• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021 The Android Open Source Project
2# Copyright (c) 2021 Google Inc.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16KNOWN_FUNCTION_OPCODES = {
17    "vkCreateInstance": 20000,
18    "vkDestroyInstance": 20001,
19    "vkEnumeratePhysicalDevices": 20002,
20    "vkGetPhysicalDeviceFeatures": 20003,
21    "vkGetPhysicalDeviceFormatProperties": 20004,
22    "vkGetPhysicalDeviceImageFormatProperties": 20005,
23    "vkGetPhysicalDeviceProperties": 20006,
24    "vkGetPhysicalDeviceQueueFamilyProperties": 20007,
25    "vkGetPhysicalDeviceMemoryProperties": 20008,
26    "vkGetInstanceProcAddr": 20009,
27    "vkGetDeviceProcAddr": 20010,
28    "vkCreateDevice": 20011,
29    "vkDestroyDevice": 20012,
30    "vkEnumerateInstanceExtensionProperties": 20013,
31    "vkEnumerateDeviceExtensionProperties": 20014,
32    "vkEnumerateInstanceLayerProperties": 20015,
33    "vkEnumerateDeviceLayerProperties": 20016,
34    "vkGetDeviceQueue": 20017,
35    "vkQueueSubmit": 20018,
36    "vkQueueWaitIdle": 20019,
37    "vkDeviceWaitIdle": 20020,
38    "vkAllocateMemory": 20021,
39    "vkFreeMemory": 20022,
40    "vkMapMemory": 20023,
41    "vkUnmapMemory": 20024,
42    "vkFlushMappedMemoryRanges": 20025,
43    "vkInvalidateMappedMemoryRanges": 20026,
44    "vkGetDeviceMemoryCommitment": 20027,
45    "vkBindBufferMemory": 20028,
46    "vkBindImageMemory": 20029,
47    "vkGetBufferMemoryRequirements": 20030,
48    "vkGetImageMemoryRequirements": 20031,
49    "vkGetImageSparseMemoryRequirements": 20032,
50    "vkGetPhysicalDeviceSparseImageFormatProperties": 20033,
51    "vkQueueBindSparse": 20034,
52    "vkCreateFence": 20035,
53    "vkDestroyFence": 20036,
54    "vkResetFences": 20037,
55    "vkGetFenceStatus": 20038,
56    "vkWaitForFences": 20039,
57    "vkCreateSemaphore": 20040,
58    "vkDestroySemaphore": 20041,
59    "vkCreateEvent": 20042,
60    "vkDestroyEvent": 20043,
61    "vkGetEventStatus": 20044,
62    "vkSetEvent": 20045,
63    "vkResetEvent": 20046,
64    "vkCreateQueryPool": 20047,
65    "vkDestroyQueryPool": 20048,
66    "vkGetQueryPoolResults": 20049,
67    "vkCreateBuffer": 20050,
68    "vkDestroyBuffer": 20051,
69    "vkCreateBufferView": 20052,
70    "vkDestroyBufferView": 20053,
71    "vkCreateImage": 20054,
72    "vkDestroyImage": 20055,
73    "vkGetImageSubresourceLayout": 20056,
74    "vkCreateImageView": 20057,
75    "vkDestroyImageView": 20058,
76    "vkCreateShaderModule": 20059,
77    "vkDestroyShaderModule": 20060,
78    "vkCreatePipelineCache": 20061,
79    "vkDestroyPipelineCache": 20062,
80    "vkGetPipelineCacheData": 20063,
81    "vkMergePipelineCaches": 20064,
82    "vkCreateGraphicsPipelines": 20065,
83    "vkCreateComputePipelines": 20066,
84    "vkDestroyPipeline": 20067,
85    "vkCreatePipelineLayout": 20068,
86    "vkDestroyPipelineLayout": 20069,
87    "vkCreateSampler": 20070,
88    "vkDestroySampler": 20071,
89    "vkCreateDescriptorSetLayout": 20072,
90    "vkDestroyDescriptorSetLayout": 20073,
91    "vkCreateDescriptorPool": 20074,
92    "vkDestroyDescriptorPool": 20075,
93    "vkResetDescriptorPool": 20076,
94    "vkAllocateDescriptorSets": 20077,
95    "vkFreeDescriptorSets": 20078,
96    "vkUpdateDescriptorSets": 20079,
97    "vkCreateFramebuffer": 20080,
98    "vkDestroyFramebuffer": 20081,
99    "vkCreateRenderPass": 20082,
100    "vkDestroyRenderPass": 20083,
101    "vkGetRenderAreaGranularity": 20084,
102    "vkCreateCommandPool": 20085,
103    "vkDestroyCommandPool": 20086,
104    "vkResetCommandPool": 20087,
105    "vkAllocateCommandBuffers": 20088,
106    "vkFreeCommandBuffers": 20089,
107    "vkBeginCommandBuffer": 20090,
108    "vkEndCommandBuffer": 20091,
109    "vkResetCommandBuffer": 20092,
110    "vkCmdBindPipeline": 20093,
111    "vkCmdSetViewport": 20094,
112    "vkCmdSetScissor": 20095,
113    "vkCmdSetLineWidth": 20096,
114    "vkCmdSetDepthBias": 20097,
115    "vkCmdSetBlendConstants": 20098,
116    "vkCmdSetDepthBounds": 20099,
117    "vkCmdSetStencilCompareMask": 20100,
118    "vkCmdSetStencilWriteMask": 20101,
119    "vkCmdSetStencilReference": 20102,
120    "vkCmdBindDescriptorSets": 20103,
121    "vkCmdBindIndexBuffer": 20104,
122    "vkCmdBindVertexBuffers": 20105,
123    "vkCmdDraw": 20106,
124    "vkCmdDrawIndexed": 20107,
125    "vkCmdDrawIndirect": 20108,
126    "vkCmdDrawIndexedIndirect": 20109,
127    "vkCmdDispatch": 20110,
128    "vkCmdDispatchIndirect": 20111,
129    "vkCmdCopyBuffer": 20112,
130    "vkCmdCopyImage": 20113,
131    "vkCmdBlitImage": 20114,
132    "vkCmdCopyBufferToImage": 20115,
133    "vkCmdCopyImageToBuffer": 20116,
134    "vkCmdUpdateBuffer": 20117,
135    "vkCmdFillBuffer": 20118,
136    "vkCmdClearColorImage": 20119,
137    "vkCmdClearDepthStencilImage": 20120,
138    "vkCmdClearAttachments": 20121,
139    "vkCmdResolveImage": 20122,
140    "vkCmdSetEvent": 20123,
141    "vkCmdResetEvent": 20124,
142    "vkCmdWaitEvents": 20125,
143    "vkCmdPipelineBarrier": 20126,
144    "vkCmdBeginQuery": 20127,
145    "vkCmdEndQuery": 20128,
146    "vkCmdResetQueryPool": 20129,
147    "vkCmdWriteTimestamp": 20130,
148    "vkCmdCopyQueryPoolResults": 20131,
149    "vkCmdPushConstants": 20132,
150    "vkCmdBeginRenderPass": 20133,
151    "vkCmdNextSubpass": 20134,
152    "vkCmdEndRenderPass": 20135,
153    "vkCmdExecuteCommands": 20136,
154    "vkEnumerateInstanceVersion": 20137,
155    "vkBindBufferMemory2": 20138,
156    "vkBindImageMemory2": 20139,
157    "vkGetDeviceGroupPeerMemoryFeatures": 20140,
158    "vkCmdSetDeviceMask": 20141,
159    "vkCmdDispatchBase": 20142,
160    "vkEnumeratePhysicalDeviceGroups": 20143,
161    "vkGetImageMemoryRequirements2": 20144,
162    "vkGetBufferMemoryRequirements2": 20145,
163    "vkGetImageSparseMemoryRequirements2": 20146,
164    "vkGetPhysicalDeviceFeatures2": 20147,
165    "vkGetPhysicalDeviceProperties2": 20148,
166    "vkGetPhysicalDeviceFormatProperties2": 20149,
167    "vkGetPhysicalDeviceImageFormatProperties2": 20150,
168    "vkGetPhysicalDeviceQueueFamilyProperties2": 20151,
169    "vkGetPhysicalDeviceMemoryProperties2": 20152,
170    "vkGetPhysicalDeviceSparseImageFormatProperties2": 20153,
171    "vkTrimCommandPool": 20154,
172    "vkGetDeviceQueue2": 20155,
173    "vkCreateSamplerYcbcrConversion": 20156,
174    "vkDestroySamplerYcbcrConversion": 20157,
175    "vkCreateDescriptorUpdateTemplate": 20158,
176    "vkDestroyDescriptorUpdateTemplate": 20159,
177    "vkUpdateDescriptorSetWithTemplate": 20160,
178    "vkGetPhysicalDeviceExternalBufferProperties": 20161,
179    "vkGetPhysicalDeviceExternalFenceProperties": 20162,
180    "vkGetPhysicalDeviceExternalSemaphoreProperties": 20163,
181    "vkGetDescriptorSetLayoutSupport": 20164,
182    "vkDestroySurfaceKHR": 20165,
183    "vkGetPhysicalDeviceSurfaceSupportKHR": 20166,
184    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": 20167,
185    "vkGetPhysicalDeviceSurfaceFormatsKHR": 20168,
186    "vkGetPhysicalDeviceSurfacePresentModesKHR": 20169,
187    "vkCreateSwapchainKHR": 20170,
188    "vkDestroySwapchainKHR": 20171,
189    "vkGetSwapchainImagesKHR": 20172,
190    "vkAcquireNextImageKHR": 20173,
191    "vkQueuePresentKHR": 20174,
192    "vkGetDeviceGroupPresentCapabilitiesKHR": 20175,
193    "vkGetDeviceGroupSurfacePresentModesKHR": 20176,
194    "vkGetPhysicalDevicePresentRectanglesKHR": 20177,
195    "vkAcquireNextImage2KHR": 20178,
196    "vkGetPhysicalDeviceDisplayPropertiesKHR": 20179,
197    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": 20180,
198    "vkGetDisplayPlaneSupportedDisplaysKHR": 20181,
199    "vkGetDisplayModePropertiesKHR": 20182,
200    "vkCreateDisplayModeKHR": 20183,
201    "vkGetDisplayPlaneCapabilitiesKHR": 20184,
202    "vkCreateDisplayPlaneSurfaceKHR": 20185,
203    "vkCreateSharedSwapchainsKHR": 20186,
204    "vkCreateXlibSurfaceKHR": 20187,
205    "vkGetPhysicalDeviceXlibPresentationSupportKHR": 20188,
206    "vkCreateXcbSurfaceKHR": 20189,
207    "vkGetPhysicalDeviceXcbPresentationSupportKHR": 20190,
208    "vkCreateWaylandSurfaceKHR": 20191,
209    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": 20192,
210    "vkCreateMirSurfaceKHR": 20193,
211    "vkGetPhysicalDeviceMirPresentationSupportKHR": 20194,
212    "vkCreateAndroidSurfaceKHR": 20195,
213    "vkCreateWin32SurfaceKHR": 20196,
214    "vkGetPhysicalDeviceWin32PresentationSupportKHR": 20197,
215    "vkGetPhysicalDeviceFeatures2KHR": 20198,
216    "vkGetPhysicalDeviceProperties2KHR": 20199,
217    "vkGetPhysicalDeviceFormatProperties2KHR": 20200,
218    "vkGetPhysicalDeviceImageFormatProperties2KHR": 20201,
219    "vkGetPhysicalDeviceQueueFamilyProperties2KHR": 20202,
220    "vkGetPhysicalDeviceMemoryProperties2KHR": 20203,
221    "vkGetPhysicalDeviceSparseImageFormatProperties2KHR": 20204,
222    "vkGetDeviceGroupPeerMemoryFeaturesKHR": 20205,
223    "vkCmdSetDeviceMaskKHR": 20206,
224    "vkCmdDispatchBaseKHR": 20207,
225    "vkTrimCommandPoolKHR": 20208,
226    "vkEnumeratePhysicalDeviceGroupsKHR": 20209,
227    "vkGetPhysicalDeviceExternalBufferPropertiesKHR": 20210,
228    "vkGetMemoryWin32HandleKHR": 20211,
229    "vkGetMemoryWin32HandlePropertiesKHR": 20212,
230    "vkGetMemoryFdKHR": 20213,
231    "vkGetMemoryFdPropertiesKHR": 20214,
232    "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR": 20215,
233    "vkImportSemaphoreWin32HandleKHR": 20216,
234    "vkGetSemaphoreWin32HandleKHR": 20217,
235    "vkImportSemaphoreFdKHR": 20218,
236    "vkGetSemaphoreFdKHR": 20219,
237    "vkCmdPushDescriptorSetKHR": 20220,
238    "vkCmdPushDescriptorSetWithTemplateKHR": 20221,
239    "vkCreateDescriptorUpdateTemplateKHR": 20222,
240    "vkDestroyDescriptorUpdateTemplateKHR": 20223,
241    "vkUpdateDescriptorSetWithTemplateKHR": 20224,
242    "vkCreateRenderPass2KHR": 20225,
243    "vkCmdBeginRenderPass2KHR": 20226,
244    "vkCmdNextSubpass2KHR": 20227,
245    "vkCmdEndRenderPass2KHR": 20228,
246    "vkGetSwapchainStatusKHR": 20229,
247    "vkGetPhysicalDeviceExternalFencePropertiesKHR": 20230,
248    "vkImportFenceWin32HandleKHR": 20231,
249    "vkGetFenceWin32HandleKHR": 20232,
250    "vkImportFenceFdKHR": 20233,
251    "vkGetFenceFdKHR": 20234,
252    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": 20235,
253    "vkGetPhysicalDeviceSurfaceFormats2KHR": 20236,
254    "vkGetPhysicalDeviceDisplayProperties2KHR": 20237,
255    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": 20238,
256    "vkGetDisplayModeProperties2KHR": 20239,
257    "vkGetDisplayPlaneCapabilities2KHR": 20240,
258    "vkGetImageMemoryRequirements2KHR": 20241,
259    "vkGetBufferMemoryRequirements2KHR": 20242,
260    "vkGetImageSparseMemoryRequirements2KHR": 20243,
261    "vkCreateSamplerYcbcrConversionKHR": 20244,
262    "vkDestroySamplerYcbcrConversionKHR": 20245,
263    "vkBindBufferMemory2KHR": 20246,
264    "vkBindImageMemory2KHR": 20247,
265    "vkGetDescriptorSetLayoutSupportKHR": 20248,
266    "vkCmdDrawIndirectCountKHR": 20249,
267    "vkCmdDrawIndexedIndirectCountKHR": 20250,
268    "vkGetSwapchainGrallocUsageANDROID": 20251,
269    "vkAcquireImageANDROID": 20252,
270    "vkQueueSignalReleaseImageANDROID": 20253,
271    "vkCreateDebugReportCallbackEXT": 20254,
272    "vkDestroyDebugReportCallbackEXT": 20255,
273    "vkDebugReportMessageEXT": 20256,
274    "vkDebugMarkerSetObjectTagEXT": 20257,
275    "vkDebugMarkerSetObjectNameEXT": 20258,
276    "vkCmdDebugMarkerBeginEXT": 20259,
277    "vkCmdDebugMarkerEndEXT": 20260,
278    "vkCmdDebugMarkerInsertEXT": 20261,
279    "vkCmdDrawIndirectCountAMD": 20262,
280    "vkCmdDrawIndexedIndirectCountAMD": 20263,
281    "vkGetShaderInfoAMD": 20264,
282    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": 20265,
283    "vkGetMemoryWin32HandleNV": 20266,
284    "vkCreateViSurfaceNN": 20267,
285    "vkCmdBeginConditionalRenderingEXT": 20268,
286    "vkCmdEndConditionalRenderingEXT": 20269,
287    "vkCmdProcessCommandsNVX": 20270,
288    "vkCmdReserveSpaceForCommandsNVX": 20271,
289    "vkCreateIndirectCommandsLayoutNVX": 20272,
290    "vkDestroyIndirectCommandsLayoutNVX": 20273,
291    "vkCreateObjectTableNVX": 20274,
292    "vkDestroyObjectTableNVX": 20275,
293    "vkRegisterObjectsNVX": 20276,
294    "vkUnregisterObjectsNVX": 20277,
295    "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": 20278,
296    "vkCmdSetViewportWScalingNV": 20279,
297    "vkReleaseDisplayEXT": 20280,
298    "vkAcquireXlibDisplayEXT": 20281,
299    "vkGetRandROutputDisplayEXT": 20282,
300    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": 20283,
301    "vkDisplayPowerControlEXT": 20284,
302    "vkRegisterDeviceEventEXT": 20285,
303    "vkRegisterDisplayEventEXT": 20286,
304    "vkGetSwapchainCounterEXT": 20287,
305    "vkGetRefreshCycleDurationGOOGLE": 20288,
306    "vkGetPastPresentationTimingGOOGLE": 20289,
307    "vkCmdSetDiscardRectangleEXT": 20290,
308    "vkSetHdrMetadataEXT": 20291,
309    "vkCreateIOSSurfaceMVK": 20292,
310    "vkCreateMacOSSurfaceMVK": 20293,
311    "vkSetDebugUtilsObjectNameEXT": 20294,
312    "vkSetDebugUtilsObjectTagEXT": 20295,
313    "vkQueueBeginDebugUtilsLabelEXT": 20296,
314    "vkQueueEndDebugUtilsLabelEXT": 20297,
315    "vkQueueInsertDebugUtilsLabelEXT": 20298,
316    "vkCmdBeginDebugUtilsLabelEXT": 20299,
317    "vkCmdEndDebugUtilsLabelEXT": 20300,
318    "vkCmdInsertDebugUtilsLabelEXT": 20301,
319    "vkCreateDebugUtilsMessengerEXT": 20302,
320    "vkDestroyDebugUtilsMessengerEXT": 20303,
321    "vkSubmitDebugUtilsMessageEXT": 20304,
322    "vkGetAndroidHardwareBufferPropertiesANDROID": 20305,
323    "vkGetMemoryAndroidHardwareBufferANDROID": 20306,
324    "vkCmdSetSampleLocationsEXT": 20307,
325    "vkGetPhysicalDeviceMultisamplePropertiesEXT": 20308,
326    "vkCreateValidationCacheEXT": 20309,
327    "vkDestroyValidationCacheEXT": 20310,
328    "vkMergeValidationCachesEXT": 20311,
329    "vkGetValidationCacheDataEXT": 20312,
330    "vkGetMemoryHostPointerPropertiesEXT": 20313,
331    "vkCmdWriteBufferMarkerAMD": 20314,
332    "vkCmdSetCheckpointNV": 20315,
333    "vkGetQueueCheckpointDataNV": 20316,
334    "vkMapMemoryIntoAddressSpaceGOOGLE": 20317,
335    "vkRegisterImageColorBufferGOOGLE": 20318,
336    "vkRegisterBufferColorBufferGOOGLE": 20319,
337    "vkUpdateDescriptorSetWithTemplateSizedGOOGLE": 20320,
338    "vkBeginCommandBufferAsyncGOOGLE": 20321,
339    "vkEndCommandBufferAsyncGOOGLE": 20322,
340    "vkResetCommandBufferAsyncGOOGLE": 20323,
341    "vkCommandBufferHostSyncGOOGLE": 20324,
342    "vkCreateImageWithRequirementsGOOGLE": 20325,
343    "vkCreateBufferWithRequirementsGOOGLE": 20326,
344    "vkGetMemoryHostAddressInfoGOOGLE": 20327,
345    "vkFreeMemorySyncGOOGLE": 20328,
346    "vkQueueHostSyncGOOGLE": 20329,
347    "vkQueueSubmitAsyncGOOGLE": 20330,
348    "vkQueueWaitIdleAsyncGOOGLE": 20331,
349    "vkQueueBindSparseAsyncGOOGLE": 20332,
350    "vkGetLinearImageLayoutGOOGLE": 20333,
351    "vkGetMTLDeviceMVK": 20334,
352    "vkSetMTLTextureMVK": 20335,
353    "vkGetMTLTextureMVK": 20336,
354    "vkGetMTLBufferMVK": 20337,
355    "vkUseIOSurfaceMVK": 20338,
356    "vkGetIOSurfaceMVK": 20339,
357    "vkQueueFlushCommandsGOOGLE": 20340,
358}
359
360CUSTOM_MARSHAL_TYPES = {
361    "VkAccelerationStructureInstanceKHR": {
362        "common": """
363typedef struct VkAccelerationStructureInstanceKHRWithoutBitFields {
364    VkTransformMatrixKHR          transform;
365    uint32_t                      dwords[2];
366    uint64_t                      accelerationStructureReference;
367} VkAccelerationStructureInstanceKHRWithoutBitFields;
368""",
369        "marshaling": """
370const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
371marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
372for (uint32_t i = 0; i < 2; i++) {{
373    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
374}}
375{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
376""",
377        "unmarshaling": """
378VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
379unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
380for (uint32_t i = 0; i < 2; i++) {{
381    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
382}}
383{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
384""",
385        "reservedmarshaling": """
386(void)vkStream;
387const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
388reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
389for (uint32_t i = 0; i < 2; i++) {{
390    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
391    *ptr += sizeof(uint32_t);
392}}
393memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
394*ptr += sizeof(uint64_t);
395""",
396        "reservedunmarshaling": """
397VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
398reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
399for (uint32_t i = 0; i < 2; i++) {{
400    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
401    *ptr += sizeof(uint32_t);
402}}
403memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
404*ptr += sizeof(uint64_t);
405""",
406    },
407}
408