kernels-bot commited on
Commit
e265b9a
·
verified ·
1 Parent(s): 148d93b

Uploaded using `kernel-builder`.

Browse files
README.md CHANGED
@@ -12,13 +12,12 @@ This is the repository card of kernels-community/flash-attn4 that has been pushe
12
  from kernels import get_kernel
13
 
14
  kernel_module = get_kernel("kernels-community/flash-attn4", version=1)
15
- _private_for_testing = kernel_module._private_for_testing
16
 
17
- _private_for_testing(...)
18
  ```
19
 
20
  ## Available functions
21
- - `_private_for_testing`
22
  - `flash_attn_func`
23
  - `flash_attn_varlen_func`
24
 
 
12
  from kernels import get_kernel
13
 
14
  kernel_module = get_kernel("kernels-community/flash-attn4", version=1)
15
+ flash_attn_func = kernel_module.flash_attn_func
16
 
17
+ flash_attn_func(...)
18
  ```
19
 
20
  ## Available functions
 
21
  - `flash_attn_func`
22
  - `flash_attn_varlen_func`
23
 
build/torch-cuda/_ops.py CHANGED
@@ -4,11 +4,8 @@ def get_backend() -> str:
4
  """Detect the backend by inspecting torch."""
5
  import torch
6
 
7
- if hasattr(torch.backends, "tpu"):
8
- # torch_tpu sets torch.backends.tpu when it is imported (via
9
- # torch's device-backend autoload), regardless of whether TPU
10
- # hardware is present — analogous to torch.version.cuda being
11
- # set on CUDA builds without a GPU.
12
  return "tpu"
13
  elif hasattr(torch, "neuron"):
14
  # Needs to be sorted before specific Torch builds, since Neuron
@@ -28,7 +25,7 @@ def get_backend() -> str:
28
 
29
  def _find_ops_name() -> str:
30
  kernel_name = "flash_attn4"
31
- unique_id = "d8eaf3c"
32
  backend = get_backend()
33
  return f"_{kernel_name}_{backend}_{unique_id}"
34
 
 
4
  """Detect the backend by inspecting torch."""
5
  import torch
6
 
7
+ acc = torch.accelerator.current_accelerator() if hasattr(torch, "accelerator") else None
8
+ if acc is not None and acc.type == "tpu":
 
 
 
9
  return "tpu"
10
  elif hasattr(torch, "neuron"):
11
  # Needs to be sorted before specific Torch builds, since Neuron
 
25
 
26
  def _find_ops_name() -> str:
27
  kernel_name = "flash_attn4"
28
+ unique_id = "fe2bb66"
29
  backend = get_backend()
30
  return f"_{kernel_name}_{backend}_{unique_id}"
31
 
build/torch-cuda/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "flash-attn4",
3
- "id": "_flash_attn4_cuda_d8eaf3c",
4
  "version": 1,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
@@ -18,7 +18,7 @@
18
  "algorithm": "sha256",
19
  "files": {
20
  "__init__.py": "9nhmToMqhkzqb88qdOhfpDICvN3LHSZhEM8HXa7VlcU=",
21
- "_ops.py": "PVG5218SwxBt8nM52gD8xBjus4sHeK7/H9pZkvPRxCc=",
22
  "_private_for_testing.py": "QXVDjtjb5NEXpgkZ93UyWJgHbrhi757Jlc8lkkTKETw=",
23
  "ampere_helpers.py": "ytrBcKfaN54nw20EQ2BIDXEM+ojQgtrSud7NWOSEcRE=",
24
  "barrier.py": "dnr4B6p1IbjRXubJU09HRaetIiSw2iuBbMScy56mwRk=",
@@ -73,6 +73,7 @@
73
  "sm100_hd256_2cta_fmha_backward_dqkernel.py": "SKQ8lUEl1P4ZcsHiMaGBqQJFL2o0oZTJhF8oOx6iXDs=",
74
  "sm100_hd256_2cta_fmha_forward.py": "aJ0icWUbC3D2iLlj8SDXb+eaM0/U4mljFlIaH8iEZd4=",
75
  "softmax.py": "eCMvLFCXjlrgm0s24D5rrdbFFRMyah1ESWjB3BEgLu4=",
 
76
  "testing.py": "M0K0R1EmZm5b/wUDFs0qWGhS98gusj/SEXJHDMQKFf8=",
77
  "tile_scheduler.py": "ELRFy6rI+J+8Z2fMDLxYrCiuUMSaBLa4h10dIe27bmA=",
78
  "topk_gather_kv.py": "WchMfXog4eIIIOhTKu0vE5k3dfn41jVqrl9wtafJvRw=",
@@ -81,12 +82,12 @@
81
  },
82
  "provenance": {
83
  "kernel-builder": {
84
- "version": "0.17.0-dev0",
85
- "commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
86
  "dirty": false
87
  },
88
  "kernel": {
89
- "commit": "d8eaf3cbe010f4795d0b0c4b0103862387ccdc97",
90
  "dirty": false
91
  }
92
  }
 
1
  {
2
  "name": "flash-attn4",
3
+ "id": "_flash_attn4_cuda_fe2bb66",
4
  "version": 1,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
 
18
  "algorithm": "sha256",
19
  "files": {
20
  "__init__.py": "9nhmToMqhkzqb88qdOhfpDICvN3LHSZhEM8HXa7VlcU=",
21
+ "_ops.py": "8hlPAUtGYqw/G4b8+0+ISwpDNXBEv/vFUAvreZZCZJs=",
22
  "_private_for_testing.py": "QXVDjtjb5NEXpgkZ93UyWJgHbrhi757Jlc8lkkTKETw=",
23
  "ampere_helpers.py": "ytrBcKfaN54nw20EQ2BIDXEM+ojQgtrSud7NWOSEcRE=",
24
  "barrier.py": "dnr4B6p1IbjRXubJU09HRaetIiSw2iuBbMScy56mwRk=",
 
73
  "sm100_hd256_2cta_fmha_backward_dqkernel.py": "SKQ8lUEl1P4ZcsHiMaGBqQJFL2o0oZTJhF8oOx6iXDs=",
74
  "sm100_hd256_2cta_fmha_forward.py": "aJ0icWUbC3D2iLlj8SDXb+eaM0/U4mljFlIaH8iEZd4=",
75
  "softmax.py": "eCMvLFCXjlrgm0s24D5rrdbFFRMyah1ESWjB3BEgLu4=",
76
+ "symbols.json": "0HMhyU/quAYAqu1USFWSJTBCCekIJ6CaTDl6+Kj4tBE=",
77
  "testing.py": "M0K0R1EmZm5b/wUDFs0qWGhS98gusj/SEXJHDMQKFf8=",
78
  "tile_scheduler.py": "ELRFy6rI+J+8Z2fMDLxYrCiuUMSaBLa4h10dIe27bmA=",
79
  "topk_gather_kv.py": "WchMfXog4eIIIOhTKu0vE5k3dfn41jVqrl9wtafJvRw=",
 
82
  },
83
  "provenance": {
84
  "kernel-builder": {
85
+ "version": "0.18.0-dev0",
86
+ "commit": "d054906a13710b811b96697b4635f03020842733",
87
  "dirty": false
88
  },
89
  "kernel": {
90
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
91
  "dirty": false
92
  }
93
  }
build/torch-cuda/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHLDCCBrGgAwIBAgIUaiO5BB6HCtEPc3PvLRUjOP9nIeowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDA5MDU0ODAwWhcNMjYxMDA5MDU1ODAwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETIsdsW0O37rh1qyrgqDkxHlBL53jr18rNf5AJ+5fJ3FGJOBYvuFLNcs/aAxbMz9vanYPmT0rWaehZ/biISubDaOCBdAwggXMMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChkOGVhZjNjYmUwMTBmNDc5NWQwYjBjNGIwMTAzODYyMzg3Y2NkYzk3MBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChkOGVhZjNjYmUwMTBmNDc5NWQwYjBjNGIwMTAzODYyMzg3Y2NkYzk3MBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChkOGVhZjNjYmUwMTBmNDc5NWQwYjBjNGIwMTAzODYyMzg3Y2NkYzk3MB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZDhlYWYzY2JlMDEwZjQ3OTVkMGIwYzRiMDEwMzg2MjM4N2NjZGM5NzAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zNzg5MDA3MjU2Mi9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhHzRAkgAABAMARjBEAiAZI9hyMcw+zb48pnia0Z6oDeaKOjTEcYTTojvfnrfcIQIgYzSuxHdeHDvzjH72mwTa14UZkHhUZzMvEU40AD/Gcm0wCgYIKoZIzj0EAwMDaQAwZgIxAKW7iULUzBh1NyQtCUMtwxn2/sQqds11g9IM7x+3Y8dyL2Vn04UnhycDVZr3QkAV2AIxAMOPwXykMlBB9n1zCRV4AAQJ3Tz1zZ4rVI1Jb85YZL+XMiFYXTHbYYiakmrvQQV9jg=="}, "tlogEntries":[{"logIndex":"3158300548", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1791524881", "inclusionPromise":{"signedEntryTimestamp":"MEQCIHFiOOrNg5hWKd4yhtEc+AyamHy32Quis8MRp/lfrlrAAiBdXLJldMzhFn3Ze8MAo+c0umebO+H7K1APvxR8/RiVGg=="}, "inclusionProof":{"logIndex":"3036396286", "rootHash":"bMj1mIUUaH5YxcCfHW4MZ2Yu08meQttLejLqiiOfgSM=", "treeSize":"3036396363", "hashes":["Zk9ofGIJCPkNI9MbhVz/q+Viz+ROnWHoLLs/qXsDJR8=", "J0H5h4aDgIvQOo4xBJJbGPPvdlflwUFQYyComai4dv8=", "XucYSIaxwHhd97uMxezHhD8Bs2qB5nS+OkS74N4xf/I=", "YbU2dE0cZBS1REfCDSLcjVrRIkpqk9K4kQ6eeP0J3EY=", "WwMjdflPvj7Fv1vqheVgo9ODC9CbtYACYaeLrTxMyh8=", "GEYqiexf/EargoQEPY4LlSyXZqw1Ri4QMY5y3m45t9c=", "zsypp30i/LymeGcbdEGb40hisYBwEMa69ceb6i3dyZ0=", "i7bGduPjtG7M+nXrQ+EyrWK3+wnefYHQORrA0CfE60s=", "apR5CN9786D4B3bQTJDKBGKN8Hzz97O9553uJ5pbb4E=", "ALARoiWopOoOyvZTDqtCBQhOOv5L1iYg1zWlrGOkO+8=", "dbwja4ySxQpLzbkAueAzy0JRQt9+qXngoOJ7/2GPgdA=", "zF38HwB7+kAxViW9f0u1wg607wEusbfnWfCbEjTwZeg=", "78RhvRg8R4WwHxVvzWwFGNaJwKZGwJSN7GYO7kn5vP8=", "F5tQx3q6DM2bQD3L/G2KJ9rAjZ0VMzlAmuw1Urrltpg=", "KbyZDOTON24dtLPkz0tlGLB0OsswC4djFUNHxHjMipI=", "VPmQZaiIPP+jGVmSWjYHBv/V9OCTZbwibPFCdg+AHeQ=", "GSGvSu0XsdO6cBgqJwZWqKj8191ujOCFNrbeVOnHXfU=", "bDbLklSZE3cNPdbgkYjsldgt1tp4oyGy0Ey74MEDzVs=", "kbqJ2Mh+r6zBJA5FYtUICq/XJ22GIh0GC+s04H3SZOs=", "QsIovxEueg218cKeugrO+eGZOkloq5eRks0NcVdhADs=", "QJUdtMG5fqTebI7bWTn0N8FLr9gz+BNgQr/7OsNQa1w=", "hafZfJdzUX/yyCr3Anv7Qq1DWVaWxotaclNRcl/O9SQ=", "NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3036396363\nbMj1mIUUaH5YxcCfHW4MZ2Yu08meQttLejLqiiOfgSM=\n\n— rekor.sigstore.dev wNI9ajBFAiA0P6aGAzgnO9XDvwWRaJx9QXvfUBS9Dw3vxR7ztFfPiAIhALCz3nsAF2ubYLeMcYhEOsvjoHihHKaK7JECiBs4tLYh\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjODljNjJjNDZlMmNlNmY2MzNkMjM3NWIwMGY5ZDU2ZmUxZDM3MTY5MGI0YjEyZDIxODQ3ODliODU4ZTZhYjk2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUN5L1NyUDlZNlQ4SEd3MThsQlV3MHJjMEdSVkJHYUY4MXdMM0EwdUI1OE5nSWdBWXNNUFBTelY1R3phUGY5YzdOWSttVVVjSUgvYmd0RXpjRlVaaVBucDRRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KSFowRjNTVUpCWjBsVllXbFBOVUpDTmtoRGRFVlFZek5RZGt4U1ZXcFBVRGx1U1dWdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUVRWTlJGVXdUMFJCZDFkb1kwNU5hbGw0VFVSQk5VMUVWVEZQUkVGM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZVU1hOa2MxY3dUek0zY21neGNYbHlaM0ZFYTNoSWJFSk1OVE5xY2pFNGNrNW1OVUVLU2lzMVprb3pSa2RLVDBKWmRuVkdURTVqY3k5aFFYaGlUWG81ZG1GdVdWQnRWREJ5VjJGbGFGb3ZZbWxKVTNWaVJHRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmhyVDBkV2FBcGFhazVxV1cxVmQwMVVRbTFPUkdNMVRsZFJkMWxxUW1wT1IwbDNUVlJCZWs5RVdYbE5lbWN6V1RKT2ExbDZhek5OUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUd0UFIxWm9XbXBPYWxsdFZYZE5WRUp0Q2s1RVl6Vk9WMUYzV1dwQ2FrNUhTWGROVkVGNlQwUlplVTE2WnpOWk1rNXJXWHByTTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUd0UFIxWm9DbHBxVG1wWmJWVjNUVlJDYlU1RVl6Vk9WMUYzV1dwQ2FrNUhTWGROVkVGNlQwUlplVTE2WnpOWk1rNXJXWHByTTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhUkdoc1dWZFplbGt5U214TlJFVjNXbXBSTTA5VVZtdE5SMGwzV1hwU2FVMUVSWGROZW1jeVRXcE5ORTR5VG1vS1drZE5OVTU2UVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlRucG5OVTFFUVROTmFsVXlUV2s1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvU0hwU1FXdG5RVUZDUVUxQlVtcENSVUZwUVZwSk9XaDVUV04zSzNwaU5EaHdibWxoTUZvMmIwUmxZVXRQYWxSRlkxbFVWQXB2YW5abWJuSm1ZMGxSU1dkWmVsTjFlRWhrWlVoRWRucHFTRGN5YlhkVVlURTBWVnByU0doVlducE5ka1ZWTkRCQlJDOUhZMjB3ZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVZGQmQxcG5TWGhCUzFjM2FWVk1WWHBDYURGT2VWRjBRMVZOZEhkNGJqSXZjMUZ4WkhNeE1XYzVTVTAzZUNzeldUaGtlVXd5Vm00S01EUlZibWg1WTBSV1duSXpVV3RCVmpKQlNYaEJUVTlRZDFoNWEwMXNRa0k1YmpGNlExSldORUZCVVVvelZIb3hlbG8wY2xaSk1VcGlPRFZaV2t3cldBcE5hVVpaV0ZSSVlsbFphV0ZyYlhKMlVWRldPV3BuUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQga/ftQX+Cp+GwKHvcuGjTypyrClR3uyRJIc7yMRfJWfYCFDOvrtjaHdE+JRj4dufWZulluFG0GA8yMDI2MTAwOTA1NDgwMFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDA5MDU0ODAwWjAvBgkqhkiG9w0BCQQxIgQg3n5m57tFO6j5/pC7/ObB3dv8o1ly0YdiBpOAg6qmyAAwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwaGivGI3OO/NI8PWSy8bCj9I1h5eOBI9O3zVKSfgbGE30OytYA+km0Zz4NR3Cz/2xAjBgU8Iuq9n1qBUcq1O1cvui7BflbJWh00Gvi7boLP3cxI5RF+HerV6fjlRna8zyaZs="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"yJxixG4s5vYz0jdbAPnVb+HTcWkLSxLSGEeJuFjmq5Y="}, "signature":"MEUCIQCy/SrP9Y6T8HGw18lBUw0rc0GRVBGaF81wL3A0uB58NgIgAYsMPPSzV5GzaPf9c7NY+mUUcIH/bgtEzcFUZiPnp4Q="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrKgAwIBAgIUANBClRVynHlC+xZNWI4Oe0i/0pswCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTExMTExWhcNMjYxMDE5MTEyMTExWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62AJrJzOCJAaOzuT/9kGHYmLXf49hSWueeEc4jJkEIxliAOAmUIaflRM5rAz9Qy5q4ArMsmpFFQH2Q/NUV+hx6OCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTU2MTU4OS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhU9u6MgAABAMARzBFAiBxSvEmx2GkQTfNbrlaB+BgZtkqELHWzLpjONrJwdiD2AIhAJrUB5kgZehtpgHdoqlMUKm8qMDJveVBR7jxqF8bE1cfMAoGCCqGSM49BAMDA2kAMGYCMQDcyWEWAxauTpAI5Lbc829Z1odOfrWBU6ApcK69neIUO5UkzuXyQWqexKQ4iKhY2BECMQC/+rEvyoAoEWW887agQ75oisiiWZ274G+dVGHFdAxA0x9YRWOB0w1YXBjkuqWncIE="}, "tlogEntries":[{"logIndex":"3320124420", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1792408271", "inclusionPromise":{"signedEntryTimestamp":"MEQCIB/sQxMHQjjCovRirr1lryG1NBMzRKlsN+jLX6m3uzJ9AiBPlCY+crPYEAsn71sn6m7BybvaPHTx02ldGpjbN8X2pA=="}, "inclusionProof":{"logIndex":"3198220158", "rootHash":"wrmHMCMrnfXkACeGxVElC9hKGVaCmzzu5Z03iJ6Lm9w=", "treeSize":"3198220172", "hashes":["Iao6SjOqxEyMDP3FjQSIQWSQuzPWs7XodK7qapFi5eE=", "iwV/SxgROUY4XtTrS2oAmTafQgbHJCpoq2s9cotgJ1E=", "56GGm31rMZJHYr/j5sCs1Bh49s+rW4Qk6rlgY5VfWBs=", "Lq0pFZQkpQ4cnHo5m1eJC2OmzAZATP3m/lqGrYLiS0g=", "8DD9F+VxBgl1U/egAv5RAnTcB+H5xCjxoBGK5MDUeJA=", "2m4I3FnOV8oRuJu7+S8JcpIbBR1NUaeBkwEyKs8+8Wg=", "53Vg/R6BTOaSUBxDgfn2NZsR6cf1+kJaSg74DSqxmPc=", "nDisHLySPV5rVn127z2NRvA2uxfXVyalhxX5Co2EFeE=", "74OR42HHwv/jlcYNvsU9MADTRK4cP+SFgdaNyebCMmQ=", "6ICrfx71btPS32mW1shZsNdbNDbBbRHUROVILjFWCAY=", "WnrK7bCiYUq5eLDU7tKs29GSKG9ML9tEMOjTtiJObP0=", "At4iGvqsBw6bk/WPdqQxZwddvLBeLQlRRp/p7JE2dNM=", "zO1JREYDQalrISj1aIpbBiZL2BiSzomWHRsaHaxd6ZE=", "f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=", "OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=", "uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=", "nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=", "G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=", "qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=", "gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=", "NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198220172\nwrmHMCMrnfXkACeGxVElC9hKGVaCmzzu5Z03iJ6Lm9w=\n\n— rekor.sigstore.dev wNI9ajBFAiEAuGytd66R37NSCwNRLKxLfacnEbtUCx5U6pIFsxKrVaYCIGwYCrd0Jhp8mM7u19WYJ41CDDqEttkP9sC21SpUoJ1C\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1ODViYTJkMmJlNjU3YzliZWU1ZmNkNzI4NmFhZWM2N2U1OTJjMTdlMDc1YmM0Y2I0ZmYyYTJlODE4NmNmMmU2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNud3JScS84VkVtWXRQZWkvK1JNbDNqT3VTOXE5MUtxZG5FdUFVMm9OcXhRSWhBSm8raXhzN0VIelRFNXljN2RQWHJ0YXV5cjhycmVQcDJ2T0pwNGhFTDdVYiIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KTFowRjNTVUpCWjBsVlFVNUNRMnhTVm5sdVNHeERLM2hhVGxkSk5FOWxNR2t2TUhCemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjRUVlJGZUZkb1kwNU5hbGw0VFVSRk5VMVVSWGxOVkVWNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUyTWtGS2NrcDZUME5LUVdGUGVuVlVMemxyUjBoWmJVeFlaalE1YUZOWGRXVmxSV01LTkdwS2EwVkplR3hwUVU5QmJWVkpZV1pzVWswMWNrRjZPVkY1TlhFMFFYSk5jMjF3UmtaUlNESlJMMDVWVml0b2VEWlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVVlRKTlZGVTBUMU01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVlRsMU5rMW5RVUZDUVUxQlVucENSa0ZwUW5oVGRrVnRlREpIYTFGVVprNWljbXhoUWl0Q1oxcDBhM0ZGVEVoWGVreHdhZ3BQVG5KS2QyUnBSREpCU1doQlNuSlZRalZyWjFwbGFIUndaMGhrYjNGc1RWVkxiVGh4VFVSS2RtVldRbEkzYW5oeFJqaGlSVEZqWmsxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKclFVMUhXVU5OVVVSamVWZEZWMEY0WVhWVWNFRkpOVXhpWXpneU9Wb3hiMlJQWm5KWFFsVTJRWEJqU3pZNWJtVkpWVTgxVldzS2VuVlllVkZYY1dWNFMxRTBhVXRvV1RKQ1JVTk5VVU12SzNKRmRubHZRVzlGVjFjNE9EZGhaMUUzTlc5cGMybHBWMW95TnpSSEsyUldSMGhHWkVGNFFRb3dlRGxaVWxkUFFqQjNNVmxZUW1wcmRYRlhibU5KUlQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgAzMEUYAjoSkFBz1Q15PI5PE+bFmKP6dWnuAeP9/pNdYCFGxjDpd8IzjLO1XN+zhEi32d7F+iGA8yMDI2MTAxOTExMTExMVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTExMTExWjAvBgkqhkiG9w0BCQQxIgQgnTW88gyWLsIjbb6k7BR72GO3GZ+71XGNKQBFCrrJtcEwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwO1S6VNDZ6jFhMGMW4f7kOvzPwdjRIm5j+r/tnlhBVWQSWEUSNIHVaSEG4g3hGtSAAjEAjSnkcrCgrbVg8YjJmJNGSdQiT3W7qHcGVTwOCJ3il7oMR2u1hvan2+n2CzCE0aKj"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"WFui0r5lfJvuX81yhqrsZ+WSwX4HW8TLT/Ki6Bhs8uY="}, "signature":"MEYCIQCnwrRq/8VEmYtPei/+RMl3jOuS9q91KqdnEuAU2oNqxQIhAJo+ixs7EHzTE5yc7dPXrtauyr8rrePp2vOJp4hEL7Ub"}}
build/torch-cuda/symbols.json ADDED
@@ -0,0 +1,343 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_flash_attn4_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "flash_attn_func",
7
+ "qualname": "flash_attn_func",
8
+ "module": "_flash_attn4_cuda_fe2bb66.interface",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "q",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "v",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "qv",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": "None",
35
+ "annotation": "torch.Tensor | None"
36
+ },
37
+ {
38
+ "name": "gather_kv_indices",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": "None",
41
+ "annotation": "torch.Tensor | None"
42
+ },
43
+ {
44
+ "name": "softmax_scale",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": "None",
47
+ "annotation": "float | None"
48
+ },
49
+ {
50
+ "name": "causal",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": "False",
53
+ "annotation": "bool"
54
+ },
55
+ {
56
+ "name": "window_size",
57
+ "kind": "POSITIONAL_OR_KEYWORD",
58
+ "default": "(None, None)",
59
+ "annotation": "Tuple[int | None, int | None]"
60
+ },
61
+ {
62
+ "name": "learnable_sink",
63
+ "kind": "POSITIONAL_OR_KEYWORD",
64
+ "default": "None",
65
+ "annotation": "torch.Tensor | None"
66
+ },
67
+ {
68
+ "name": "softcap",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": "0.0",
71
+ "annotation": "float"
72
+ },
73
+ {
74
+ "name": "num_splits",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": "1",
77
+ "annotation": "int"
78
+ },
79
+ {
80
+ "name": "pack_gqa",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": "None",
83
+ "annotation": "bool | None"
84
+ },
85
+ {
86
+ "name": "deterministic",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": "False",
89
+ "annotation": "bool"
90
+ },
91
+ {
92
+ "name": "score_mod",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "None",
95
+ "annotation": "Callable | None"
96
+ },
97
+ {
98
+ "name": "score_mod_bwd",
99
+ "kind": "POSITIONAL_OR_KEYWORD",
100
+ "default": "None",
101
+ "annotation": "Callable | None"
102
+ },
103
+ {
104
+ "name": "mask_mod",
105
+ "kind": "POSITIONAL_OR_KEYWORD",
106
+ "default": "None",
107
+ "annotation": "Callable | None"
108
+ },
109
+ {
110
+ "name": "aux_tensors",
111
+ "kind": "POSITIONAL_OR_KEYWORD",
112
+ "default": "None",
113
+ "annotation": "list | None"
114
+ },
115
+ {
116
+ "name": "aux_scalars",
117
+ "kind": "POSITIONAL_OR_KEYWORD",
118
+ "default": "None",
119
+ "annotation": "tuple | None"
120
+ },
121
+ {
122
+ "name": "block_sparse_tensors",
123
+ "kind": "POSITIONAL_OR_KEYWORD",
124
+ "default": "None",
125
+ "annotation": "_flash_attn4_cuda_fe2bb66.block_sparsity.BlockSparseTensorsTorch | None"
126
+ },
127
+ {
128
+ "name": "block_sparse_tensors_bwd",
129
+ "kind": "POSITIONAL_OR_KEYWORD",
130
+ "default": "None",
131
+ "annotation": "_flash_attn4_cuda_fe2bb66.block_sparsity.BlockSparseTensorsTorch | None"
132
+ },
133
+ {
134
+ "name": "return_lse",
135
+ "kind": "POSITIONAL_OR_KEYWORD",
136
+ "default": "False",
137
+ "annotation": "bool"
138
+ }
139
+ ],
140
+ "return_annotation": null
141
+ }
142
+ },
143
+ {
144
+ "name": "flash_attn_varlen_func",
145
+ "qualname": "flash_attn_varlen_func",
146
+ "module": "_flash_attn4_cuda_fe2bb66.interface",
147
+ "kind": "function",
148
+ "doc": "Tensor arguments:\n q: (total_q, nheads, hdim) or (batch, seqlen_q, nheads, hdim)\n k: (total_k, nheads_k, hdim) or (batch, seqlen_k, nheads_k, hdim)\n v: (total_k, nheads_k, hdim_v) or (batch, seqlen_k, nheads_k, hdim_v)\n qv: (total_q, nheads, hdim_v) or (batch, seqlen_q, nheads, hdim_v)\n cu_seqlens_q: (batch + 1) or seqused_q: (batch)\n cu_seqlens_k: (batch + 1) or seqused_k: (batch)\n gather_kv_indices: (total_q, gather_kv_length) or\n (batch, seqlen_q, gather_kv_length)\n page_table: (batch, max_num_pages_per_seq)\n\nReturn:\n out: (total_q, nheads, hdim) or (batch, seqlen_q, nheads, hdim)\n lse: (nheads, total_q) or (batch, nheads, seqlen_q) if not has_qv (standard)\n (total_q, nheads) or (batch, seqlen_q, nheads) if has_qv\n\nExplanation of some optional arguments & decisions:\n\nqv: we write the MLA weight absorbed formula as\n O = softmax(scale * (Q @ K.T + Qv @ V.T)) @ V\n where Q = q_pe, Qv = q_nope, K = pe_cache, V = kv_cache.\n\nlse return shape: with Qv, MQA with nheads at least divisible by 4 is typical,\n so we arrange for nheads as the contiguous mode for better vectorization.\n\ngather_kv_indices: used for topk sparsity with MLA absorption kernel.\n\nmin_seqlen_k: for varlen, specifies the minimum kv sequence length for any batch.\n Used with gather_kv_indices to determine if we need oob masking.\n\nscheduler_metadata: optional tensors used by certain tile schedulers, for optimization\n and functionality. computed in get_scheduler_metadata.\n\nseqlen_k_per_split: when using dynamic (per-batch) num_splits, can set a fixed seqlen_k to be\n covered per split for bitwise reproducibility.\n\ndisable_scheduler_metadata: if True, ignores scheduler_metadata if it is passed and skips\n computing metadata fresh.",
149
+ "signature": {
150
+ "parameters": [
151
+ {
152
+ "name": "q",
153
+ "kind": "POSITIONAL_OR_KEYWORD",
154
+ "default": null,
155
+ "annotation": "torch.Tensor"
156
+ },
157
+ {
158
+ "name": "k",
159
+ "kind": "POSITIONAL_OR_KEYWORD",
160
+ "default": null,
161
+ "annotation": "torch.Tensor"
162
+ },
163
+ {
164
+ "name": "v",
165
+ "kind": "POSITIONAL_OR_KEYWORD",
166
+ "default": null,
167
+ "annotation": "torch.Tensor"
168
+ },
169
+ {
170
+ "name": "qv",
171
+ "kind": "POSITIONAL_OR_KEYWORD",
172
+ "default": "None",
173
+ "annotation": "torch.Tensor | None"
174
+ },
175
+ {
176
+ "name": "cu_seqlens_q",
177
+ "kind": "POSITIONAL_OR_KEYWORD",
178
+ "default": "None",
179
+ "annotation": "torch.Tensor | None"
180
+ },
181
+ {
182
+ "name": "cu_seqlens_k",
183
+ "kind": "POSITIONAL_OR_KEYWORD",
184
+ "default": "None",
185
+ "annotation": "torch.Tensor | None"
186
+ },
187
+ {
188
+ "name": "max_seqlen_q",
189
+ "kind": "POSITIONAL_OR_KEYWORD",
190
+ "default": "None",
191
+ "annotation": "int | None"
192
+ },
193
+ {
194
+ "name": "max_seqlen_k",
195
+ "kind": "POSITIONAL_OR_KEYWORD",
196
+ "default": "None",
197
+ "annotation": "int | None"
198
+ },
199
+ {
200
+ "name": "min_seqlen_k",
201
+ "kind": "POSITIONAL_OR_KEYWORD",
202
+ "default": "None",
203
+ "annotation": "int | None"
204
+ },
205
+ {
206
+ "name": "seqused_q",
207
+ "kind": "POSITIONAL_OR_KEYWORD",
208
+ "default": "None",
209
+ "annotation": "torch.Tensor | None"
210
+ },
211
+ {
212
+ "name": "seqused_k",
213
+ "kind": "POSITIONAL_OR_KEYWORD",
214
+ "default": "None",
215
+ "annotation": "torch.Tensor | None"
216
+ },
217
+ {
218
+ "name": "gather_kv_indices",
219
+ "kind": "POSITIONAL_OR_KEYWORD",
220
+ "default": "None",
221
+ "annotation": "torch.Tensor | None"
222
+ },
223
+ {
224
+ "name": "page_table",
225
+ "kind": "POSITIONAL_OR_KEYWORD",
226
+ "default": "None",
227
+ "annotation": "torch.Tensor | None"
228
+ },
229
+ {
230
+ "name": "softmax_scale",
231
+ "kind": "POSITIONAL_OR_KEYWORD",
232
+ "default": "None",
233
+ "annotation": "float | None"
234
+ },
235
+ {
236
+ "name": "causal",
237
+ "kind": "POSITIONAL_OR_KEYWORD",
238
+ "default": "False",
239
+ "annotation": "bool"
240
+ },
241
+ {
242
+ "name": "window_size",
243
+ "kind": "POSITIONAL_OR_KEYWORD",
244
+ "default": "(None, None)",
245
+ "annotation": "Tuple[int | None, int | None]"
246
+ },
247
+ {
248
+ "name": "learnable_sink",
249
+ "kind": "POSITIONAL_OR_KEYWORD",
250
+ "default": "None",
251
+ "annotation": "torch.Tensor | None"
252
+ },
253
+ {
254
+ "name": "softcap",
255
+ "kind": "POSITIONAL_OR_KEYWORD",
256
+ "default": "0.0",
257
+ "annotation": "float"
258
+ },
259
+ {
260
+ "name": "num_splits",
261
+ "kind": "POSITIONAL_OR_KEYWORD",
262
+ "default": "1",
263
+ "annotation": "int"
264
+ },
265
+ {
266
+ "name": "pack_gqa",
267
+ "kind": "POSITIONAL_OR_KEYWORD",
268
+ "default": "None",
269
+ "annotation": "bool | None"
270
+ },
271
+ {
272
+ "name": "deterministic",
273
+ "kind": "POSITIONAL_OR_KEYWORD",
274
+ "default": "False",
275
+ "annotation": "bool"
276
+ },
277
+ {
278
+ "name": "score_mod",
279
+ "kind": "POSITIONAL_OR_KEYWORD",
280
+ "default": "None",
281
+ "annotation": "Callable | None"
282
+ },
283
+ {
284
+ "name": "score_mod_bwd",
285
+ "kind": "POSITIONAL_OR_KEYWORD",
286
+ "default": "None",
287
+ "annotation": "Callable | None"
288
+ },
289
+ {
290
+ "name": "mask_mod",
291
+ "kind": "POSITIONAL_OR_KEYWORD",
292
+ "default": "None",
293
+ "annotation": "Callable | None"
294
+ },
295
+ {
296
+ "name": "block_sparse_tensors",
297
+ "kind": "POSITIONAL_OR_KEYWORD",
298
+ "default": "None",
299
+ "annotation": "_flash_attn4_cuda_fe2bb66.block_sparsity.BlockSparseTensorsTorch | None"
300
+ },
301
+ {
302
+ "name": "aux_tensors",
303
+ "kind": "POSITIONAL_OR_KEYWORD",
304
+ "default": "None",
305
+ "annotation": "list | None"
306
+ },
307
+ {
308
+ "name": "aux_scalars",
309
+ "kind": "POSITIONAL_OR_KEYWORD",
310
+ "default": "None",
311
+ "annotation": "tuple | None"
312
+ },
313
+ {
314
+ "name": "return_lse",
315
+ "kind": "POSITIONAL_OR_KEYWORD",
316
+ "default": "False",
317
+ "annotation": "bool"
318
+ },
319
+ {
320
+ "name": "scheduler_metadata",
321
+ "kind": "POSITIONAL_OR_KEYWORD",
322
+ "default": "None",
323
+ "annotation": "_flash_attn4_cuda_fe2bb66.prepare_scheduler.SchedulerMetadataTensorsTorch | None"
324
+ },
325
+ {
326
+ "name": "seqlen_k_per_split",
327
+ "kind": "POSITIONAL_OR_KEYWORD",
328
+ "default": "None",
329
+ "annotation": "int | None"
330
+ },
331
+ {
332
+ "name": "disable_scheduler_metadata",
333
+ "kind": "POSITIONAL_OR_KEYWORD",
334
+ "default": "False",
335
+ "annotation": "bool"
336
+ }
337
+ ],
338
+ "return_annotation": null
339
+ }
340
+ }
341
+ ],
342
+ "layers": []
343
+ }