PageSourceSearch

https://primova.com.br/

html primova.com.br collected 2026-10-06 18:34:35 UTC 11,198 bytes, 204 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="pt-BR">
4  <head>
5    <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 5-6
5
6    <script async src="https://www.googletagmanager.com/gtag/js?id=
6G-81LVZ46J95
vendor: 16 bytes, lines 6-7
6"></script>
7    
7<script>
8      
vendor: 146 bytes, lines 8-12
8window.dataLayer = window.dataLayer || [];
9      function gtag(){dataLayer.push(arguments);}
10      gtag('js', new Date());
11
12      gtag('config', '
12G-81LVZ46J95
vendor: 8 bytes, lines 12-13
12');
13    
13</script>
13
14    
15    <meta charset="UTF-8" />
16    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
17    
18    <!-- Security Headers - Applied before analytics scripts -->
19    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com https://googletagmanager.com https://www.youtube.com https://youtube.com https://s.ytimg.com https://*.clarity.ms https://www.clarity.ms https://c.bing.com https://us-assets.i.posthog.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https: http: https://*.clarity.ms https://c.bing.com; media-src 'self' blob: https:; connect-src 'self' https://www.google-analytics.com https://analytics.google.com https://stats.g.doubleclick.net https://region1.analytics.google.com https://region1.google-analytics.com https://*.supabase.co wss://*.supabase.co https://www.youtube.com https://*.clarity.ms https://www.clarity.ms https://c.clarity.ms https://c.bing.com wss://*.clarity.ms https://us.i.posthog.com https://us-assets.i.posthog.com; frame-src 'self' https://www.youtube.com https://youtube.com https://www.youtube-nocookie.com; object-src 'none'; base-uri 'self';" />
20    <meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin" />
21    <meta http-equiv="X-Content-Type-Options" content="nosniff" />
22    <!-- NOTE: X-Frame-Options must be set via HTTP response header; removed to avoid console warning -->
23    <!-- NOTE: Permissions-Policy must be set via HTTP response header; removed to avoid console warnings for unsupported features -->
24    <!-- NOTE: X-XSS-Protection is legacy and ignored by modern browsers; intentionally omitted -->
25    
26    <title>Primova - Soluções em Mobilidade Urbana Inteligente</title>
27    <meta name="description" content="Soluções completas em mobilidade urbana inteligente. Primova conecta pessoas e governos com tecnologia para cidades do futuro. Digitalização de serviços públicos." />
28    <meta name="keywords" content="mobilidade urbana, transporte público, cidades inteligentes, digitalização, governo digital, aplicativo transporte, Cittamobi" />
29    <meta name="author" content="Primova" />
30    <meta name="robots" content="index, follow" />
31    <link rel="canonical" href="https://primova.com.br" />
32    
33    <!-- Google Tag Manager -->
34    
34<script>
vendor: 343 bytes, lines 34-38
34(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
35    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
36    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
37    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
38    })(window,document,'script','dataLayer','
38GTM-TB25NSQX
vendor: 3 bytes, line 38
38');
38</script>
38
39    <!-- End Google Tag Manager -->
40    
41    <!-- Microsoft Clarity -->
42    
42<script type="text/javascript">
43    (function(c,l,a,r,i,t,y){
44        try {
45            c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
46            
47            var loadClarity = function() {
48                try {
49                    t=l.createElement(r);
50                    t.async=1;
51                    t.src="https://www.clarity.ms/tag/"+i;
52                    t.onerror=function(){console.error("[Clarity] Script load failed")};
53                    
54                    // Try to insert before first script
55                    y=l.getElementsByTagName(r)[0];
56                    if (y && y.parentNode) {
57                        y.parentNode.insertBefore(t,y);
58                        console.log("[Clarity] Script injected via insertBefore");
59                    } else {
60                        // Fallback: append to head
61                        l.head.appendChild(t);
62                        console.log("[Clarity] Script injected via appendChild");
63                    }
64                } catch(e) {
65                    console.error("[Clarity] Injection error:", e);
66                }
67            };
68            
69            // Load immediately if DOM ready, otherwise wait
70            if (l.readyState === 'loading') {
71                l.addEventListener('DOMContentLoaded', loadClarity);
72            } else {
73                loadClarity();
74            }
75        } catch(e) {
76            console.error("[Clarity] Init error:", e);
77        }
78    })(window, document, "clarity", "script", "trjvkli3ma");
79    </script>
79
80    <!-- End Microsoft Clarity -->
81    
82    <!-- Favicons da Primova -->
83    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
84    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
85    <link rel="shortcut icon" href="/favicon.ico" />
86    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
87    <link rel="manifest" href="/site.webmanifest" />
88    <meta name="theme-color" content="#ffffff">
89    
90    <link rel="preconnect" href="https://fonts.googleapis.com">
91    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
92    <!-- Preconnect to analytics domains for better performance -->
93    <link rel="preconnect" href="https://www.googletagmanager.com">
94    <link rel="preconnect" href="https://www.google-analytics.com">
95    <link rel="dns-prefetch" href="https://www.clarity.ms">
96    <link rel="preconnect" href="https://www.clarity.ms" crossorigin>
97    <link rel="dns-prefetch" href="https://c.clarity.ms">
98    <link rel="preconnect" href="https://c.clarity.ms" crossorigin>
99    <link rel="preload" href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
100    <noscript><link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap" rel="stylesheet"></noscript>
101
102    <meta property="og:title" content="Primova - Soluções em Mobilidade Urbana Inteligente" />
103    <meta property="og:description" content="Soluções completas em mobilidade urbana inteligente. Conecte pessoas e governos com tecnologia para cidades do futuro." />
104    <meta property="og:type" content="website" />
105    <meta property="og:url" content="https://primova.com.br" />
106    <meta property="og:image" content="https://primova.com.br/android-chrome-512x512.png?v=2" />
107    <meta property="og:image:width" content="512" />
108    <meta property="og:image:height" content="512" />
109    <meta property="og:image:type" content="image/png" />
110
111    <meta name="twitter:card" content="summary_large_image" />
112    <meta name="twitter:site" content="@primova" />
113    <meta name="twitter:title" content="Primova - Soluções em Mobilidade Urbana Inteligente" />
114    <meta name="twitter:description" content="Soluções completas em mobilidade urbana inteligente para cidades do futuro." />
115    
116    <!-- CSS preload optimization to eliminate render-blocking -->
117    
117<script>
118      (function() {
119        // Override Vite's CSS injection to use preload pattern
120        const originalCreateElement = document.createElement;
121        document.createElement = function(tagName) {
122          const element = originalCreateElement.call(this, tagName);
123          
124          if (tagName.toLowerCase() === 'link') {
125            const originalSetAttribute = element.setAttribute;
126            element.setAttribute = function(name, value) {
127              if (name === 'rel' && value === 'stylesheet' && element.href && element.href.includes('.css')) {
128                // Convert to preload pattern
129                originalSetAttribute.call(this, 'rel', 'preload');
130                originalSetAttribute.call(this, 'as', 'style');
131                this.onload = function() {
132                  this.onload = null;
133                  this.rel = 'stylesheet';
134                };
135                // Add noscript fallback
136                setTimeout(() => {
137                  if (this.parentNode) {
138                    const noscript = document.createElement('noscript');
139                    const fallbackLink = document.createElement('link');
140                    fallbackLink.rel = 'stylesheet';
141                    fallbackLink.href = this.href;
142                    noscript.appendChild(fallbackLink);
143                    this.parentNode.insertBefore(noscript, this.nextSibling);
144                  }
145                }, 0);
146                return;
147              }
148              originalSetAttribute.call(this, name, value);
149            };
150          }
151          
152          return element;
153        };
154        
155        // Also handle existing stylesheets
156        function optimizeExistingCss() {
157          const links = document.querySelectorAll('link[rel="stylesheet"][href*=".css"]');
158          links.forEach(function(link) {
159            if (!link.hasAttribute('data-optimized')) {
160              const href = link.href;
161              link.setAttribute('data-optimized', 'true');
162              link.rel = 'preload';
163              link.as = 'style';
164              link.onload = function() {
165                this.onload = null;
166                this.rel = 'stylesheet';
167              };
168              // Add noscript fallback
169              const noscript = document.createElement('noscript');
170              const fallbackLink = originalCreateElement.call(document, 'link');
171              fallbackLink.rel = 'stylesheet';
172              fallbackLink.href = href;
173              noscript.appendChild(fallbackLink);
174              link.parentNode.insertBefore(noscript, link.nextSibling);
175            }
176          });
177        }
178        
179        // Run optimization
180        if (document.readyState === 'loading') {
181          document.addEventListener('DOMContentLoaded', optimizeExistingCss);
182        } else {
183          optimizeExistingCss();
184        }
185      })();
186    </script>
186
187    
187<script type="module" crossorigin src="/assets/index-DUGYnIGR.js"></script>
187
188    <link rel="modulepreload" crossorigin href="/assets/vendor-DYACTBzZ.js">
189    <link rel="modulepreload" crossorigin href="/assets/ui-BWgSL8f6.js">
190    <link rel="modulepreload" crossorigin href="/assets/charts-CofyMyUx.js">
191    <link rel="modulepreload" crossorigin href="/assets/router-a5jbAsFh.js">
192    <link rel="modulepreload" crossorigin href="/assets/carousel-DLujva8-.js">
193    <link rel="stylesheet" crossorigin href="/assets/index-C5MtKpsF.css">
194  
194<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
194<meta name="twitter:image" content="https://primova.com.br/android-chrome-512x512.png?v=2"></head>
195
196  <body>
197    <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 197-198
197
198    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
198GTM-TB25NSQX
vendor: 91 bytes, lines 198-200
198"
199    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
200    
200<!-- End Google Tag Manager (noscript) -->
201    
202    <div id="root"></div>
203  </body>
204</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.