blog.semmle.com
Open in
urlscan Pro
104.26.8.225
Public Scan
Effective URL: https://blog.semmle.com/
Submission: On September 25 via api from US — Scanned from DE
Summary
TLS certificate: Issued by Cloudflare Inc ECC CA-3 on June 7th 2021. Valid for: a year.
This is the only time blog.semmle.com was scanned on urlscan.io!
urlscan.io Verdict: No classification
Domain & IP information
IP Address | AS Autonomous System | ||
---|---|---|---|
1 1 | 216.239.38.21 216.239.38.21 | 15169 (GOOGLE) (GOOGLE) | |
34 | 104.26.8.225 104.26.8.225 | 13335 (CLOUDFLAR...) (CLOUDFLARENET) | |
1 | 142.250.74.200 142.250.74.200 | 15169 (GOOGLE) (GOOGLE) | |
35 | 3 |
ASN15169 (GOOGLE, US)
PTR: fra24s02-in-f8.1e100.net
www.googletagmanager.com |
Apex Domain Subdomains |
Transfer | |
---|---|---|
34 |
semmle.com
blog.semmle.com semmle.com |
2 MB |
1 |
googletagmanager.com
www.googletagmanager.com |
32 KB |
1 |
lgtm.com
1 redirects
lgtm.com |
971 B |
35 | 3 |
Domain | Requested by | |
---|---|---|
33 | blog.semmle.com |
blog.semmle.com
|
1 | semmle.com |
www.googletagmanager.com
|
1 | www.googletagmanager.com |
blog.semmle.com
|
1 | lgtm.com | 1 redirects |
35 | 4 |
This site contains links to these domains. Also see Links.
Domain |
---|
semmle.com |
help.semmle.com |
www.linkedin.com |
Subject Issuer | Validity | Valid | |
---|---|---|---|
semmle.com Cloudflare Inc ECC CA-3 |
2021-06-07 - 2022-06-06 |
a year | crt.sh |
*.google-analytics.com GTS CA 1C3 |
2021-08-30 - 2021-11-22 |
3 months | crt.sh |
This page contains 1 frames:
Primary Page:
https://blog.semmle.com/
Frame ID: 90947A64226CC89A2FF21249E2A35972
Requests: 48 HTTP requests in this frame
Screenshot
Page Title
Home | Semmle BlogPage URL History Show full URLs
-
https://lgtm.com/blog/apache_struts_cve-2017-9805
HTTP 301
https://blog.semmle.com/ Page URL
Detected technologies
Gatsby (Static Site Generator) ExpandDetected patterns
- <div id="___gatsby">
React (JavaScript Frameworks) Expand
Detected patterns
- <[^>]+data-react
Google Tag Manager (Tag Managers) Expand
Detected patterns
- googletagmanager\.com/ns\.html[^>]+></iframe>
- googletagmanager\.com/gtm\.js
Page Statistics
13 Outgoing links
These are links going to different origins than the main page.
Search URL Search Domain Scan URL
Title: book a demo
Search URL Search Domain Scan URL
Title: CodeQL
Search URL Search Domain Scan URL
Title: LGTM
Search URL Search Domain Scan URL
Title: Variant Analysis
Search URL Search Domain Scan URL
Title: Security Research
Search URL Search Domain Scan URL
Title: Case Studies
Search URL Search Domain Scan URL
Title: Events
Search URL Search Domain Scan URL
Title: Contact
Search URL Search Domain Scan URL
Title: Documentation
Search URL Search Domain Scan URL
Title: Privacy Policy
Search URL Search Domain Scan URL
Title: Terms and Conditions
Search URL Search Domain Scan URL
Title: Follow us on LinkedIn
Search URL Search Domain Scan URL
Page URL History
This captures the URL locations of the websites, including HTTP redirects and client-side redirects via JavaScript or Meta fields.
-
https://lgtm.com/blog/apache_struts_cve-2017-9805
HTTP 301
https://blog.semmle.com/ Page URL
Redirected requests
There were HTTP redirect chains for the following requests:
35 HTTP transactions
Method Protocol |
Resource Path |
Size x-fer |
Type MIME-Type |
||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET H2 |
Primary Request
/
blog.semmle.com/ Redirect Chain
|
235 KB 137 KB |
Document
text/html |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
Redirect headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
gtm.js
www.googletagmanager.com/ |
79 KB 32 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
app-047448f1ec213706352a.js
blog.semmle.com/ |
95 KB 31 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
component---src-pages-index-jsx-4b9b600b9067df4837fd.js
blog.semmle.com/ |
5 KB 2 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
commons-cc8edcd62230e5f0cdcc.js
blog.semmle.com/ |
853 KB 380 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
webpack-runtime-7bff7383be5ddb41d890.js
blog.semmle.com/ |
4 KB 2 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/index/ |
222 KB 76 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
756 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
564 B 0 |
Image
image/jpeg |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
563 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
600 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
973 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
491 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
693 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
2 KB 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
760 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
882 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
584 B 0 |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
38 KB 38 KB |
Font
application/font-woff |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
38 KB 38 KB |
Font
application/font-woff |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
consent-banner.js
semmle.com/js/ |
0 0 |
Script
text/html |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
java-hashset.png
blog.semmle.com/static/830ae19be35708bd57f4795a6e380947/e4982/ |
144 KB 145 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
code.jpg
blog.semmle.com/static/bc0b5ef7c7da9f31722171c8c1b01c09/fe64b/ |
199 KB 199 KB |
Image
image/jpeg |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
ql-video.png
blog.semmle.com/static/1d0f99a952b46fad7fb29b7a3b00ff14/e4982/ |
34 KB 35 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
ql-slides.png
blog.semmle.com/static/537e55b70b25a4f96ea2390c51f84720/e4982/ |
30 KB 30 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
tarski_gopher.png
blog.semmle.com/static/5331e160c421bbaae1803775ff60f11d/e4982/ |
79 KB 79 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
semmle-ctf.png
blog.semmle.com/static/c0627323d8643eb3ea2ad815cbbeab11/e4982/ |
47 KB 48 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
Semmle-plus-GH.png
blog.semmle.com/static/4fa183378ad88fd95dcd36393297d53a/e4982/ |
30 KB 31 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
hussaini_suspension_bridge.png
blog.semmle.com/static/defd2b52fafcfd21bd5a7da004305a67/e4982/ |
625 KB 626 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
pii-data-leaks.png
blog.semmle.com/static/83f68e8a49a682193f4db1e2f9bc4a97/e4982/ |
208 KB 208 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
vuln-hunting.png
blog.semmle.com/static/d6d350f4335e152c15475c556f787a16/e4982/ |
221 KB 221 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
struts-example.png
blog.semmle.com/static/019bae38230f227be3b259d61cbb96f0/e4982/ |
65 KB 66 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/ql-training-slides-added/ |
0 3 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/tags/news/ |
0 21 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/libssh2-integer-overflow-CVE-2019-17498/ |
0 6 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/java-hashset-linkedhashset/ |
0 2 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/abstract-classes-extensible-queries/ |
0 2 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/ctf-winners/ |
0 3 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/golang-lgtm-support-beta/ |
0 5 KB |
Other
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/ctf-winners/ |
5 KB 3 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/tags/news/ |
50 KB 21 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/ql-training-slides-added/ |
5 KB 3 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/abstract-classes-extensible-queries/ |
2 KB 2 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/java-hashset-linkedhashset/ |
3 KB 2 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/golang-lgtm-support-beta/ |
13 KB 4 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
page-data.json
blog.semmle.com/page-data/libssh2-integer-overflow-CVE-2019-17498/ |
24 KB 6 KB |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
component---src-templates-post-page-jsx-9afd6be07650be836988.js
blog.semmle.com/ |
0 119 KB |
Other
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
component---src-templates-tag-page-jsx-fce0b2e9a7ce4bf80765.js
blog.semmle.com/ |
0 4 KB |
Other
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
Verdicts & Comments Add Verdict or Comment
26 JavaScript Global Variables
These are the non-standard "global" variables defined on the window object. These can be helpful in identifying possible client-side frameworks and code.
object| onbeforexrselect boolean| originAgentCluster object| dataLayer object| google_tag_manager string| pagePath string| webpackCompilationHash object| ___chunkMapping function| ga object| consentBanner object| webpackJsonp object| __core-js_shared__ object| core object| asyncRequires object| ___emitter object| ___loader string| ___webpackCompilationHash boolean| __navigatingToLink function| ___push function| ___replace function| ___navigate object| scCGSHMRCache function| setImmediate function| clearImmediate object| FontAwesomeConfig object| ___FONT_AWESOME___ object| _hsq2 Cookies
Cookies are little pieces of information stored in the browser of a user. Whenever a user visits the site again, he will also send his cookie values, thus allowing the website to re-identify him even if he changed locations. This is how permanent logins work.
Domain/Path | Expires | Name / Value |
---|---|---|
lgtm.com/ | Name: lgtm_short_session Value: d500a37439a846b8a4202dcec9f2670d0ec6f11eb07a9d57ecd5ca16ebb76cd83fa3bc291a2e6ca9b057580458c7a296df93b21b4d5f1aec622e6ee4d8a8d1ce |
|
lgtm.com/ | Name: lgtm_long_session Value: 53dd0bcfa566b64665bc7846662a9301e81fa96e4443be951d11b26c2224b276d715aa9de744bc7787898e82418af491337a59227d8203e2f0612d34d2abe680 |
1 Console Messages
A page may trigger messages to the console to be logged. These are often error messages about being unable to load a resource or execute a piece of JavaScript. Sometimes they also provide insight into the technology behind a website.
Source | Level | URL Text |
---|
Indicators
This is a term in the security industry to describe indicators such as IPs, Domains, Hashes, etc. This does not imply that any of these indicate malicious activity.
blog.semmle.com
lgtm.com
semmle.com
www.googletagmanager.com
104.26.8.225
142.250.74.200
216.239.38.21
07aa63b977147ec07b02cac9b3483b57f3b5a9ebbe8b8722f659221e3b3dd3e5
132f256e56ce423de241daf17e1493d0dbc0225d88c5197f79bc290249573569
23dc17075b90bca3c52e4c56e8b7c8b80309ba9e92bc90d762443936ef60de03
27499b5674a8100509f9b439013e8f0c594c0fabf0200f5fde2f6672e29907e8
304ce6dee4e093af5b53fac9ec23640410138176fdd5d489fcddde3858b13583
313ef920edbd6ead1bda7e5aa190585d989c695a2aed54498c02c4717ada723c
3526bc6337c75dd209c676416b201093a688c497a78294b89407837c146cac35
401c9c83267f1ead7ab1bac959b92721d211043844792b314605b835d6b0b2ea
4e6769c3e9948af47d390bd1e13baf1936de4944423d7b3a81fdf7c780e749a3
504aa5761037e8d0070d8db42814dd00f8d1c16cada444454614faf60b1b0500
5a34018749542f59e1898eb5b87fff428ad273ef1b6046b488d1d7d614c546f7
5ce0efb61d238ff1c284833c646324a10f6fd7b9fbd169c858f8453e6199b28e
5ff9eaf52d53b289c068d0802014f5b030d84c88fc5ab5da6a6c2309a4a62dca
647e5ca3f0ad8dabf4d9044844124fdea80d45f3ddb4387a78eb0706f3440259
7346276078dfbf10d28f4320feffad90f9188cc4cf1557ac6701f3e0343c40a8
751bf783880a3f35150cebd8ccab62b227d53546f7c47d1338515020a8cb0b23
79a8e1d1e223832b0c89ab63d46c511cb0d21b1a497fabd162ac5328d3aa417c
7ac7f1925b3c5746079a4cb3d577a50120c66cf658f4036546a62eeca33e1a3e
7da7187d9063842c75c6bbf41d6fa0900dbd4f77852fc770c872e5d0fb17efc8
7f79764ca27d03fc7a5b6f62ddcf104d2dd6139271faccade969ba3a29b93b05
8572ed2e55c2d00cc6f34e9a23b45f6e2f582b29a7c55e71bf20c4f9c8d6dfd9
8bb837a4fc2048425cc5b2f55a39088f0fe0bd695557b6694605c12225a8b4ca
8c82fcedb963d937c9b1900d7b965b5573c465760a46ce5b3a0caa64003736cd
9059ef2a2738c452f9dbab0dc7044bf528c39a6ebd47785150ac9b5d2795fb43
909cd5bfa5798ae1f16e4c2d14d88483567cc3f28fc25f474e5ae42d2306d858
91edfddd45073adbfc6dd6c99cc060d710baedd2139ec11702c074f3b48a0621
9ad31c7bbb4fbee26b808ec6f1b8efd8a95056f04dd416ad0d32bb5497a72b43
9bc2ca2930e04f8d9380d80cdeb0dabc0c81daeb95e3eaf36d69cbbde845e035
badb7bb9926956e75e2d352227c65ef8cbda6f0f4538663bcfc3942543e47ad6
c49c17b6838b6860ce4f7844d799b64c5874f06ce7810000d7aa7014b1889798
ca07c4a58eccf9955ed8f8be3d18ee7d8a9f40824a461a7bf692f08127abde1e
e24acbc948866392c931c2c9a59922dddf9c993f8f9a2c7655cb8c0a16c47e20
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
e6dfbdc4cdf34d089d2a9746d7144ab530d992b6410c859a089268234908977e
ed2b6b1a535527a8c5690f61ac9ce937d4da0ea03382f4ad874de64c9c2b4540
ef48bc1bb671b71c64701e202b68c1d5997a4bc3ada4811dd98009de80bea0bd
ef9306a57ef117c266b6d2b87f1f1f0d1d006ecee5d45d7b69f53772956fbca2
f475837e15173f034a344b6e69e09f290afe8dc8216ee826d41f1b2aa7629c66
fa84bcac977974444aea87a170a2b21f3eefa7de0903f8329be991c89f3d1835