{"context":{"domain":"granado-app"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a62e4640613f70fa449ff5d","name":"app","domain":"granado-app","visibility":"public","settings":{"defaultAccessPolicy":"private"},"updatedAt":"2026-10-15T19:50:34.779Z","createdAt":"2026-07-24T04:04:52.993Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6aa81fa218b302d938ecac35","component":"data2-core-types@Component","system":"6a62e4640613f70fa449ff5d","params":{"extends":"data2-core-primitives@Block","component":"kCustoBotDeck","package":"granado-app","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const FONT_CSS = `@font-face{font-family:'AkzExt';src:url(https://granado-app.data2.media/file/0CZkejVeZq0bfAk8k7gcV) format('opentype');font-weight:400;font-display:block}@font-face{font-family:'AkzExtLight';src:url(https://granado-app.data2.media/file/7byzMrjAumJjhuFgYCpbk) format('opentype');font-weight:300;font-display:block}`\n\nconst IMG = {\n  d2:    'https://granado-app.data2.media/file/LpTFBwceU18zO_Rq851DZ',\n  gr:    'https://granado-app.data2.media/file/KeuqyqRJshxUgDSlJ3-cP',\n  selva: 'https://granado-app.data2.media/file/vtX2WoickNniXWiKw8Wlu',\n  ring:  'https://granado-app.data2.media/file/75u1HgbGXdpQYuO5K6Qkr'\n}\n\n// ---------------------------------------------------------------- dados\n// Todo numero carrega o indice da fonte que o sustenta (secao \"As fontes\").\nconst NCOR = {A:'var(--banana)', B:'var(--verde)', C:'var(--hibisco)', D:'var(--musgo)'}\n\nconst N = {\n  comp:{\n    b2b:{casos:2739, tabs:106, de:'dez/25', ate:'set/26', meses:10},\n    wa:{casos:39191, motivos:11, de:'jan/25', ate:'dez/25', meses:12},\n    tot:41930\n  },\n  ruido:{casos:31572, pct:75},\n  cambio:5.40, precoIA:8, infra:0.05, margem:40,\n  msgs:{ruido:2, simples:4, medio:7, complexo:14},\n  niveis:[\n    {k:'A', nome:'Simples', desc:'FAQ cadastro, site, produto, preço', casos:5989, tokens:25600, custoCaso:1.598, total:9572.15},\n    {k:'B', nome:'Médio', desc:'pedido, carrinho, produto', casos:3708, tokens:31850, custoCaso:1.976, total:7328.08},\n    {k:'C', nome:'Complexo', desc:'reclamação com apuração', casos:661, tokens:120400, custoCaso:7.332, total:4846.31},\n    {k:'D', nome:'Ruído', desc:'indisponibilidade, spam, duplicado, inatividade', casos:31572, tokens:4400, custoCaso:0.316, total:9980.29}\n  ],\n  totLinha:{casos:41930, custoCaso:0.757, total:31726.83},\n  motivos:[\n    {r:1,  m:'Inatividade',                        c:'WhatsApp',   n:'D', casos:18996, custo:6004.86},\n    {r:2,  m:'Fechamento em massa s/ motivo',       c:'WhatsApp',   n:'D', casos:6261,  custo:1979.18},\n    {r:3,  m:'Cadastro',                            c:'WhatsApp',   n:'A', casos:3831,  custo:6123.04},\n    {r:4,  m:'Inatividade do time/vendedor',        c:'WhatsApp',   n:'D', casos:3129,  custo:989.11},\n    {r:5,  m:'Outros (35 motivos agrupados)',       c:'WhatsApp',   n:'B', casos:2351,  custo:4646.25},\n    {r:6,  m:'Pedido',                              c:'WhatsApp',   n:'B', casos:1115,  custo:2203.56},\n    {r:7,  m:'Dúvidas/outros',                      c:'WhatsApp',   n:'A', casos:996,   custo:1591.89},\n    {r:8,  m:'Sem motivo',                          c:'WhatsApp',   n:'D', casos:934,   custo:295.25},\n    {r:9,  m:'Spam',                                c:'WhatsApp',   n:'D', casos:840,   custo:265.53},\n    {r:10, m:'Indisponibilidade B2B',               c:'Portal B2B', n:'D', casos:593,   custo:187.45},\n    {r:11, m:'Catálogo',                            c:'WhatsApp',   n:'A', casos:392,   custo:626.53},\n    {r:12, m:'Encerrar',                            c:'WhatsApp',   n:'D', casos:346,   custo:109.37},\n    {r:13, m:'Spam',                                c:'Portal B2B', n:'D', casos:256,   custo:80.92},\n    {r:14, m:'Como comprar',                        c:'Portal B2B', n:'A', casos:228,   custo:364.41},\n    {r:15, m:'Status da entrega — reclamação',      c:'Portal B2B', n:'C', casos:206,   custo:1510.35},\n    {r:16, m:'Falta de retorno — reclamação',       c:'Portal B2B', n:'D', casos:135,   custo:42.68},\n    {r:17, m:'Status do cadastro',                  c:'Portal B2B', n:'A', casos:95,    custo:151.84},\n    {r:18, m:'Erro no site — reclamação',           c:'Portal B2B', n:'C', casos:84,    custo:615.87},\n    {r:19, m:'Caso duplicado',                      c:'Portal B2B', n:'D', casos:82,    custo:25.92},\n    {r:20, m:'Atraso na entrega — reclamação',      c:'Portal B2B', n:'C', casos:69,    custo:505.89}\n  ],\n  cauda:{n:90, casos:991, total:3406.90, custoCaso:3.438},\n  mensal:[\n    ['jan/25',1677.07],['fev/25',2709.99],['mar/25',2478.95],['abr/25',1942.21],['mai/25',2196.93],\n    ['jun/25',1816.89],['jul/25',2520.28],['ago/25',2190.29],['set/25',2042.84],['out/25',1372.49],\n    ['nov/25',1843.29],['dez/25',2736.76],['jan/26',1492.23],['fev/26',567.90],['mar/26',1061.03],\n    ['abr/26',757.97],['mai/26',32.80],['jun/26',50.81],['jul/26',913.21],['ago/26',1278.36],['set/26',39.93]\n  ],\n  humano:{custoCaso:23.46, custoMes:9009, casosMes:384, fte:1.02},\n  omnichat:{custoCaso:2.70, real11m:96842.60, mediaMes:8803.87, anoExtrapolado:105646.47, mesesComFatura:11},\n  bot:{custoCaso:0.757},\n  aplicado:{humano:983678, bot:31727, economia:951951, mult:31, multOmni:'3,6'}\n}\n\nconst SRC = [\n  [1,'Tabulações B2B por mês.xlsx','Salesforce, <b>Case Record Type = B2B</b>. 2.739 casos, 106 tabulações distintas, dez/25 a set/26. Extraído em 03/09/2026.'],\n  [2,'Dashboard \"Atendimentos — Databricks\" (Omnichat/Metabase)','Retailer RXumucrke8, jan a dez/2025. 39.191 atendimentos finalizados no WhatsApp, 11 motivos de finalização. Extraído em 10/09/2026.'],\n  [3,'RetailerPayment — API de faturamento Omnichat','Faturas reais da Omnichat, retailer RXumucrke8, jan a dez/2025. R$105.646,47/ano de plataforma, excluindo repasse de conversas WhatsApp e disparos de marketing. Extraído em 15/09/2026.']\n]\n\n// ---------------------------------------------------------------- helpers\nconst brl  = v => 'R$ ' + Math.round(v).toLocaleString('pt-BR')\nconst brl2 = v => 'R$ ' + v.toLocaleString('pt-BR',{minimumFractionDigits:2,maximumFractionDigits:2})\nconst brl3 = v => 'R$ ' + v.toLocaleString('pt-BR',{minimumFractionDigits:3,maximumFractionDigits:3})\nconst brlM = v => 'R$ ' + (v/1e6).toLocaleString('pt-BR',{minimumFractionDigits:2,maximumFractionDigits:2}) + ' mi'\nconst nb   = v => v.toLocaleString('pt-BR')\nconst s    = n => `<i class=\"s\">${n}</i>`\n\n// ---------------------------------------------------------------- graficos\nfunction gComp(){\n  const {b2b,wa} = N.comp, tot = b2b.casos+wa.casos\n  const W=900,H=104, pb=b2b.casos/tot*W, pw=W-pb-3\n  return `<svg viewBox=\"0 0 900 ${H}\" role=\"img\" aria-label=\"Composição: 2.739 casos do Portal B2B e 39.191 do WhatsApp\">\n    <rect x=\"0\" y=\"26\" width=\"${pb.toFixed(1)}\" height=\"34\" rx=\"2\" fill=\"var(--verde)\"/>\n    <rect x=\"${(pb+3).toFixed(1)}\" y=\"26\" width=\"${pw.toFixed(1)}\" height=\"34\" rx=\"2\" fill=\"#D6CFBC\"/>\n    <text class=\"cl\" x=\"0\" y=\"18\">${nb(b2b.casos)} Portal B2B · ${b2b.meses} meses</text>\n    <text class=\"cl\" x=\"900\" y=\"18\" text-anchor=\"end\">${nb(wa.casos)} WhatsApp · ${wa.meses} meses</text>\n    <text class=\"cs\" x=\"${(pb+3).toFixed(1)}\" y=\"80\">um pipeline de custo único, aplicado aos dois canais</text>\n  </svg>`\n}\n\nfunction gBar(items, mx, W){\n  W = W||900\n  return `<svg viewBox=\"0 0 ${W} ${items.length*40+8}\" role=\"img\" aria-label=\"Custo por nível de complexidade\">\n  ${items.map((it,i)=>{\n    const bw=(it.v/mx)*(W-390)\n    return `<text class=\"cl2\" x=\"0\" y=\"${i*40+20}\">${it.l}</text>\n      <text class=\"cs2\" x=\"0\" y=\"${i*40+34}\">${it.d}</text>\n      <rect x=\"270\" y=\"${i*40+8}\" width=\"${Math.max(bw,2).toFixed(1)}\" height=\"16\" rx=\"2\" fill=\"${it.c}\"/>\n      <text class=\"cv2\" x=\"${(270+Math.max(bw,2)+9).toFixed(1)}\" y=\"${i*40+21}\">${it.vf||brl(it.v)}</text>`\n  }).join('')}</svg>`\n}\n\nfunction gNiveis(){\n  const items = N.niveis.map(n=>({\n    l:`${n.k} · ${n.nome}`,\n    d:`${nb(n.casos)} casos · ${nb(n.tokens)} tokens/caso · ${brl3(n.custoCaso)}/caso`,\n    v:n.total, c:NCOR[n.k]\n  }))\n  return gBar(items, Math.max(...N.niveis.map(n=>n.total)))\n}\n\nconst NRATE = {A:1.598, B:1.976, C:7.332, D:0.316}\nfunction gMotivos(top){\n  const mx = top[0].casos\n  const items = top.map(m=>({\n    l:`${m.r}. ${m.m} <tspan class=\"cs2\">[${m.c}]</tspan>`,\n    d:`${m.n} · ${nb(m.casos)} casos · ${brl(m.custo)} · ${brl3(NRATE[m.n])}/caso`,\n    v:m.casos, vf:nb(m.casos), c:NCOR[m.n]\n  }))\n  return gBar(items, mx)\n}\n\nfunction gMensal(){\n  const v=N.mensal, W=900,H=210,PL=52,PR=20,PT=24,PB=34, iw=W-PL-PR, ih=H-PT-PB, mx=3000\n  const x=i=>PL+iw*i/(v.length-1), y=n=>PT+ih-(n/mx)*ih\n  let o=''\n  ;[0,750,1500,2250,3000].forEach(t=>{\n    o+=`<line class=\"gl\" x1=\"${PL}\" y1=\"${y(t).toFixed(1)}\" x2=\"${W-PR}\" y2=\"${y(t).toFixed(1)}\"/>`\n    o+=`<text class=\"ca\" x=\"${PL-9}\" y=\"${(y(t)+3.5).toFixed(1)}\" text-anchor=\"end\">${nb(t)}</text>`\n  })\n  const pts=v.map((d,i)=>`${x(i).toFixed(1)},${y(d[1]).toFixed(1)}`)\n  o+=`<path d=\"M${x(0)},${y(0)}L${pts.join('L')}L${x(v.length-1)},${y(0)}Z\" fill=\"var(--verde)\" opacity=\".10\"/>`\n  o+=`<path d=\"M${pts.join('L')}\" fill=\"none\" stroke=\"var(--verde)\" stroke-width=\"2.5\" stroke-linejoin=\"round\"/>`\n  v.forEach((d,i)=>{\n    o+=`<circle cx=\"${x(i).toFixed(1)}\" cy=\"${y(d[1]).toFixed(1)}\" r=\"3.4\" fill=\"var(--verde)\" stroke=\"var(--paper)\" stroke-width=\"1.6\"/>`\n    if(i%3===0||i===v.length-1) o+=`<text class=\"ca\" x=\"${x(i).toFixed(1)}\" y=\"${H-PB+17}\" text-anchor=\"middle\">${d[0]}</text>`\n  })\n  return `<svg viewBox=\"0 0 ${W} ${H}\" role=\"img\" aria-label=\"Custo mensal do pipeline, jan/25 a set/26\">${o}</svg>`\n}\n\n// ---------------------------------------------------------------- gate\nconst PASS='yestemosbananas', SKEY='custoBotUnlocked', OPEN=false\nconst GATE = `<div class=\"gwrap\">\n  <img class=\"gbg\" src=\"${IMG.selva}\" alt=\"\">\n  <div class=\"gcard\">\n    <div class=\"glock\"><img src=\"${IMG.d2}\" style=\"height:22px\" alt=\"Data²\"><span>+</span><img src=\"${IMG.gr}\" style=\"height:14px\" alt=\"Granado\"></div>\n    <div class=\"gsub\">Estudo de custo · Atendimento B2B + WhatsApp</div>\n    <input class=\"ginput\" type=\"password\" placeholder=\"Senha de acesso\" autocomplete=\"off\"/>\n    <button class=\"gbtn\">Entrar</button>\n    <div class=\"gerr\">Senha incorreta — tente novamente.</div>\n  </div>\n</div>`\n\n// ---------------------------------------------------------------- deck\nconst DECK = `<div class=\"deckwrap\">\n<header>\n  <img class=\"d2\" src=\"${IMG.d2}\" alt=\"Data²\">\n  <img class=\"gr\" src=\"${IMG.gr}\" alt=\"Granado\">\n</header>\n<div class=\"counter\" id=\"counter\">01</div>\n<div class=\"hint\">↓ navegue</div>\n<nav class=\"dots\" id=\"dots\" aria-label=\"Slides\"></nav>\n\n<div class=\"deckroot\">\n\n<!-- 01 CAPA -->\n<section class=\"capa\" id=\"capa\">\n  <div class=\"frame kb rv\">\n    <img class=\"bgimg\" src=\"${IMG.selva}\" alt=\"\">\n    <div class=\"mid\">\n      <div class=\"lockup\">\n        <img class=\"d2m\" src=\"${IMG.d2}\" alt=\"Data²\"><span class=\"plus\">+</span>\n        <img class=\"grm\" src=\"${IMG.gr}\" alt=\"Granado\">\n      </div>\n      <div class=\"sub\">Quanto custaria atender esse volume com bot</div>\n    </div>\n  </div>\n  <div class=\"caption rv\">\n    <div class=\"frase-cap\">Atendimento B2B + WhatsApp — cálculo retroativo de custo do pipeline de IA <i>…</i> sobre o histórico real.</div>\n    <div class=\"meta\">Estudo de custo · Setembro 2026</div>\n  </div>\n</section>\n\n<!-- 02 INDICE -->\n<section id=\"indice\">\n  <div class=\"eyebrow rv\">Índice</div>\n  <div class=\"indice rv\">\n    <a href=\"#base\"><span class=\"n\">01</span><span class=\"t\">A base analisada</span></a>\n    <a href=\"#achado\"><span class=\"n\">02</span><span class=\"t\">O achado-chave</span></a>\n    <a href=\"#niveis\"><span class=\"n\">03</span><span class=\"t\">Custo por complexidade</span></a>\n    <a href=\"#motivos\"><span class=\"n\">04</span><span class=\"t\">Custo por motivo</span></a>\n    <a href=\"#mensal\"><span class=\"n\">05</span><span class=\"t\">Mês a mês</span></a>\n    <a href=\"#humano\"><span class=\"n\">06</span><span class=\"t\">Humano vs. bot</span></a>\n    <a href=\"#fontes\"><span class=\"n\">07</span><span class=\"t\">Anexo · As fontes</span></a>\n  </div>\n  <div class=\"capt rv\" style=\"margin-top:14px\">Custo por motivo (04) é apresentado em duas telas, entradas 1–10 e 11–20.</div>\n</section>\n\n<!-- 03 A BASE -->\n<section id=\"base\">\n  <div class=\"eyebrow rv\">A base analisada</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(18px,3vh,36px)\">\n    <h2 class=\"rv big\">Dois canais, um pipeline de custo único.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Portal B2B (Salesforce): <b>${nb(N.comp.b2b.casos)} casos</b>, ${N.comp.b2b.tabs} tabulações\n    distintas, ${N.comp.b2b.de} a ${N.comp.b2b.ate}${s(1)}. WhatsApp (Omnichat): <b>${nb(N.comp.wa.casos)} atendimentos\n    finalizados</b>, ${N.comp.wa.motivos} motivos de finalização, jan a dez/25${s(2)}. O mesmo modelo de custo — por\n    tokens de IA e mensagens até o fechamento — é aplicado aos dois.</p>\n  </div>\n  <div class=\"kfour rv\">\n    <div class=\"kf\"><span class=\"k\">${nb(N.comp.tot)}</span><span class=\"lb\">Atendimentos no total</span><span class=\"d\">soma dos dois canais</span></div>\n    <div class=\"kf\"><span class=\"k\">${nb(N.comp.b2b.casos)}</span><span class=\"lb\">Portal B2B${s(1)}</span><span class=\"d\">${N.comp.b2b.meses} meses, ${N.comp.b2b.tabs} tabulações</span></div>\n    <div class=\"kf\"><span class=\"k\">${nb(N.comp.wa.casos)}</span><span class=\"lb\">WhatsApp${s(2)}</span><span class=\"d\">${N.comp.wa.meses} meses, ${N.comp.wa.motivos} motivos</span></div>\n    <div class=\"kf dst\"><span class=\"k\">${brl(N.totLinha.total)}</span><span class=\"lb\">Custo total do pipeline</span><span class=\"d\">${brl3(N.totLinha.custoCaso)}/caso em média</span></div>\n  </div>\n  <div class=\"chart rv\">${gComp()}</div>\n</section>\n\n<!-- 04 O ACHADO -->\n<section class=\"statement\" id=\"achado\">\n  <div class=\"eyebrow rv\">O achado-chave</div>\n  <div class=\"split\">\n    <h1 class=\"rv\">${N.ruido.pct}% do volume é ruído.</h1>\n    <p class=\"apoio destaque rv\"><b>${nb(N.ruido.casos)} de ${nb(N.comp.tot)}</b> atendimentos${s(1)}${s(2)} não são atendimento\n    real: indisponibilidade, spam, casos duplicados, inatividade. O cliente escreve porque o canal falhou, porque\n    ninguém respondeu, ou porque já tinha escrito antes — não porque tem uma necessidade nova. É a fatia mais barata\n    de resolver e a mais fácil de eliminar antes mesmo de qualquer pipeline de IA.</p>\n  </div>\n  <div class=\"eixos rv\" style=\"margin-top:clamp(26px,5vh,54px);grid-template-columns:1fr 1fr\">\n    <div class=\"ex dst\"><span class=\"n\">75%</span><div class=\"t\">Ruído</div><div class=\"v\">${nb(N.ruido.casos)}<em> casos</em></div>\n      <p>indisponibilidade, spam, duplicado, inatividade — custa só ${brl3(N.niveis[3].custoCaso)}/caso, quase nada</p></div>\n    <div class=\"ex\"><span class=\"n\">25%</span><div class=\"t\">Atendimento real</div><div class=\"v\">${nb(N.comp.tot-N.ruido.casos)}<em> casos</em></div>\n      <p>dúvidas simples, pedidos e carrinho, reclamações com apuração — onde a IA de fato trabalha</p></div>\n  </div>\n</section>\n\n<!-- 06 NIVEIS -->\n<section id=\"niveis\">\n  <div class=\"eyebrow rv\">Custo por complexidade</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(14px,2.2vh,26px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(24px,3.2vw,44px);line-height:1.12;max-width:18ch\">Quatro níveis, um custo médio de ${brl3(N.totLinha.custoCaso)} por caso.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">O ruído domina o volume mas não o custo por caso — é o nível mais barato.\n    O custo sobe com a complexidade da conversa: mais mensagens até fechar, mais chamadas de IA por caso.</p>\n  </div>\n  <div class=\"chart rv\">${gNiveis()}</div>\n  <div class=\"calc rv\" style=\"margin-top:clamp(16px,2.8vh,30px)\">\n    <div class=\"c dst\"><span class=\"ck\">${brl(N.totLinha.total)}</span><span class=\"cl\">custo total · ${nb(N.totLinha.casos)} casos</span></div>\n    <div class=\"op\">·</div>\n    <div class=\"c dst\"><span class=\"ck\">${brl3(N.totLinha.custoCaso)}</span><span class=\"cl\">por caso, em média</span></div>\n  </div>\n  <p class=\"nota rv\">Média dos quatro níveis e dos dois canais — ruído, simples, médio e complexo.</p>\n</section>\n\n<!-- 07 MOTIVOS (1/2) -->\n<section id=\"motivos\">\n  <div class=\"eyebrow rv\">Custo por motivo</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(6px,1.2vh,14px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(20px,2.6vw,32px);line-height:1.14;max-width:20ch\">As 20 maiores entradas, Portal B2B e WhatsApp misturados.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0;font-size:12.5px\">Ordenadas por volume, 1 de 2. Cor = nível —\n    <span style=\"color:var(--musgo)\">D ruído</span>, <span style=\"color:var(--banana)\">A simples</span>,\n    <span style=\"color:var(--verde)\">B médio</span>, <span style=\"color:var(--hibisco)\">C complexo</span>.</p>\n  </div>\n  <div class=\"chart rv\">${gMotivos(N.motivos.slice(0,10))}</div>\n</section>\n\n<!-- 07b MOTIVOS (2/2) -->\n<section id=\"motivos2\">\n  <div class=\"eyebrow rv\">Custo por motivo</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(6px,1.2vh,14px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(20px,2.6vw,32px);line-height:1.14;max-width:20ch\">As entradas 11 a 20, e a cauda.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0;font-size:12.5px\">2 de 2. Mais ~90 tabulações de cauda: <b>${nb(N.cauda.casos)} casos,\n    ${brl(N.cauda.total)}</b>, ${brl3(N.cauda.custoCaso)}/caso — o custo médio mais alto, porque a cauda concentra\n    reclamações raras e complexas.</p>\n  </div>\n  <div class=\"chart rv\">${gMotivos(N.motivos.slice(10,20))}</div>\n</section>\n\n<!-- 08 MENSAL -->\n<section id=\"mensal\">\n  <div class=\"eyebrow rv\">Mês a mês</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(10px,1.8vh,20px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(24px,3.2vw,44px);line-height:1.12;max-width:18ch\">21 meses corridos, os dois canais somados.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Jan/25 a set/26. Dez/25 soma WhatsApp e Portal B2B — o único mês de\n    sobreposição entre os dois canais. Set/26 é parcial, extração em 03/09/2026.</p>\n  </div>\n  <div class=\"chart rv\">${gMensal()}</div>\n  <p class=\"nota rv\">Mai/26 e jun/26 caem porque o <b>bot do canal B2B foi desligado</b> por estar\n  desatualizado — não por queda de demanda real.</p>\n</section>\n\n<!-- 09 HUMANO VS BOT -->\n<section id=\"humano\">\n  <div class=\"eyebrow rv\">Humano vs. bot</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(14px,2.2vh,26px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(24px,3.2vw,44px);line-height:1.12;max-width:18ch\">Uma régua ilustrativa, não o custo real de hoje.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Só há referência de custo humano para o canal B2B: ${brl(N.humano.custoMes)}/mês\n    ÷ ${N.humano.casosMes} casos/mês, ${N.humano.fte.toLocaleString('pt-BR',{minimumFractionDigits:2})} FTE-equivalente —\n    uma régua ilustrativa, não o custo real medido do WhatsApp hoje, que já mistura bot e humano, e não inclui custo de\n    implantação nem escalonamento humano dos casos complexos. Já o custo da plataforma atual, Omnichat, é dinheiro real,\n    medido em fatura${s(3)} — não estimativa.</p>\n  </div>\n  <div class=\"calc rv\">\n    <div class=\"c\"><span class=\"ck\">${brl2(N.humano.custoCaso)}</span><span class=\"cl\">humano por caso</span></div>\n    <div class=\"op\">→</div>\n    <div class=\"c dst\"><span class=\"ck\">${brl2(N.bot.custoCaso)}</span><span class=\"cl\">bot por caso, pipeline completo</span></div>\n    <div class=\"op\">=</div>\n    <div class=\"c dst\"><span class=\"ck\">${N.aplicado.mult}×</span><span class=\"cl\">mais barato</span></div>\n  </div>\n  <div class=\"calc rv\" style=\"margin-top:clamp(14px,2.4vh,26px)\">\n    <div class=\"c\"><span class=\"ck\">${brl2(N.omnichat.custoCaso)}</span><span class=\"cl\">Omnichat, plataforma atual, por caso${s(3)}</span></div>\n    <div class=\"op\">→</div>\n    <div class=\"c dst\"><span class=\"ck\">${brl2(N.bot.custoCaso)}</span><span class=\"cl\">bot por caso, pipeline completo</span></div>\n    <div class=\"op\">=</div>\n    <div class=\"c dst\"><span class=\"ck\">${N.aplicado.multOmni}×</span><span class=\"cl\">mais barato que a plataforma atual, sem contar custo humano</span></div>\n  </div>\n  <div class=\"tot rv\" style=\"margin-top:clamp(20px,3.2vh,36px)\"><span class=\"tl\">Aplicado aos ${nb(N.comp.tot)} casos</span>\n    <span class=\"tv\">${brl(N.aplicado.economia)}<em> de diferença</em></span>\n    <span class=\"tn\">${brl(N.aplicado.humano)} no cenário humano contra ${brl(N.aplicado.bot)} no bot — economia\n    ilustrativa, não medida.</span></div>\n</section>\n\n<!-- 10 FONTES -->\n<section id=\"fontes\">\n  <div class=\"eyebrow rv\">Anexo · As fontes</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(18px,3vh,32px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(24px,3.2vw,44px);line-height:1.12;max-width:17ch\">Todo número aqui tem etiqueta.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">O índice em cinza ao lado de cada valor aponta para uma destas três fontes:\n    Salesforce, para o Portal B2B; Omnichat/Metabase, para o WhatsApp; e o faturamento real da Omnichat, para o\n    custo da plataforma atual.</p>\n  </div>\n  <div class=\"fontes rv\">\n    ${SRC.map(([n,t,d])=>`<div class=\"f\"><span class=\"fn\">${n}</span><div><div class=\"ft\">${t}</div><div class=\"fd\">${d}</div></div></div>`).join('')}\n  </div>\n</section>\n\n<!-- 11 FECHO -->\n<section class=\"selva fecho\" data-dark id=\"fim\">\n  <div class=\"bg\"><img src=\"${IMG.selva}\" alt=\"\"></div>\n  <div class=\"mid\">\n    <img class=\"ring branco rv\" style=\"width:52px\" src=\"${IMG.ring}\" alt=\"\">\n    <p class=\"frase rv\">We build Data² while imagining a world where things just <i>…</i> work.</p>\n    <div class=\"lockup rv\"><img class=\"d2m\" style=\"height:26px\" src=\"${IMG.d2}\" alt=\"Data²\"><span class=\"plus\" style=\"font-size:20px\">+</span><img class=\"grm\" style=\"height:18px\" src=\"${IMG.gr}\" alt=\"Granado\"></div>\n    <div class=\"sub rv\">gui@data2.app · data2.app</div>\n  </div>\n</section>\n\n</div>\n</div>`\n\nfunction injectFonts(){\n  try{\n    if(!document.getElementById('akz-bc-fonts')){\n      const st=document.createElement('style'); st.id='akz-bc-fonts'; st.textContent=FONT_CSS\n      document.head.appendChild(st)\n    }\n  }catch(e){}\n}\n\nfunction initDeck(d2){\n  const wrap=d2.$('.deckwrap'); if(!wrap||wrap.dataset.init) return\n  wrap.dataset.init='1'\n  const root=wrap.querySelector('.deckroot')\n  const slides=[].slice.call(root.querySelectorAll('section'))\n  const dots=wrap.querySelector('.dots'), counter=wrap.querySelector('.counter')\n  const pad=n=>(n<10?'0':'')+n\n  let cur=0\n  slides.forEach((sl,i)=>{const a=document.createElement('a');a.href='#'+sl.id;a.setAttribute('aria-label','Slide '+(i+1));dots.appendChild(a)})\n  const links=[].slice.call(dots.children)\n  counter.textContent=pad(1)+' — '+pad(slides.length)\n  if(links[0])links[0].classList.add('on')\n  const setActive=i=>{\n    if(i===cur)return\n    cur=i\n    counter.textContent=pad(cur+1)+' — '+pad(slides.length)\n    links.forEach((l,k)=>l.classList.toggle('on',k===cur))\n    wrap.classList.toggle('on-dark',slides[cur].hasAttribute('data-dark'))\n    wrap.classList.toggle('last',cur===slides.length-1)\n  }\n  const revIO=new IntersectionObserver(es=>{es.forEach(e=>{if(e.isIntersecting){e.target.classList.add('in');revIO.unobserve(e.target)}})},{root:root,rootMargin:'0px 0px 12% 0px',threshold:.01})\n  slides.forEach(sl=>revIO.observe(sl))\n  const ratios=new Array(slides.length).fill(0)\n  const actIO=new IntersectionObserver(es=>{\n    es.forEach(e=>{const i=slides.indexOf(e.target); if(i>-1)ratios[i]=e.isIntersecting?e.intersectionRatio:0})\n    let bi=cur,bv=-1; ratios.forEach((r,i)=>{if(r>bv){bv=r;bi=i}})\n    if(bv>0)setActive(bi)\n  },{root:root,threshold:[0,.15,.35,.55,.75,1]})\n  slides.forEach(sl=>actIO.observe(sl))\n  setTimeout(()=>{if(!root.querySelector('section.in'))slides.forEach(sl=>sl.classList.add('in'))},500)\n  const rm=(typeof matchMedia==='function')&&matchMedia('(prefers-reduced-motion: reduce)').matches\n  const go=i=>{i=Math.max(0,Math.min(slides.length-1,i));slides[i].scrollIntoView({behavior:rm?'auto':'smooth'})}\n  wrap.addEventListener('click',ev=>{\n    const a=ev.target.closest&&ev.target.closest('a[href^=\"#\"]'); if(!a)return\n    ev.preventDefault()\n    const t=slides.find(sl=>sl.id===a.getAttribute('href').slice(1))\n    if(t)t.scrollIntoView({behavior:rm?'auto':'smooth'})\n  })\n  window.addEventListener('keydown',e=>{\n    if(!wrap.isConnected)return\n    if(e.key==='ArrowDown'||e.key==='ArrowRight'||e.key==='PageDown'||e.key===' '){e.preventDefault();go(cur+1)}\n    if(e.key==='ArrowUp'||e.key==='ArrowLeft'||e.key==='PageUp'){e.preventDefault();go(cur-1)}\n    if(e.key==='Home'){e.preventDefault();go(0)}\n    if(e.key==='End'){e.preventDefault();go(slides.length-1)}\n  })\n}\n\nexport default {\n  css:`\n  :host,.deckwrap{\n    --verde:#24422F; --verde-fundo:#1C3526; --paper:#FAFAF6; --ink:#12160F;\n    --musgo:#66755F; --banana:#D99A26; --hibisco:#A93526; --ok:#2F6E5B;\n    --linha:rgba(18,22,15,.14); --linha-2:rgba(18,22,15,.26);\n    --mx:clamp(20px,4vw,56px);\n    --ext:'AkzExt','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --lt:'AkzExtLight','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --sf:-apple-system,BlinkMacSystemFont,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --mono:ui-monospace,SFMono-Regular,Menlo,monospace;\n  }\n  *{box-sizing:border-box;margin:0;padding:0}\n  .deckwrap{background:var(--paper);color:var(--ink);font-family:var(--lt);\n    -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;\n    position:relative;height:100vh;height:100svh;overflow:hidden}\n  .deckroot{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;\n    scroll-snap-type:y proximity;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;\n    overscroll-behavior-y:contain}\n\n  header{position:absolute;inset:0 0 auto 0;z-index:40;display:flex;justify-content:space-between;\n    align-items:center;padding:22px var(--mx) 34px;pointer-events:none;\n    background:linear-gradient(to bottom,var(--paper) 52%,rgba(250,250,246,0))}\n  .deckwrap.on-dark header{background:none}\n  header img{height:16px;display:block;filter:brightness(0) invert(8%) sepia(9%) saturate(600%) hue-rotate(60deg)}\n  header .gr{height:13px}\n  .deckwrap.on-dark header img{filter:none}\n  .counter{position:absolute;z-index:40;left:var(--mx);bottom:22px;font-size:11px;\n    letter-spacing:.22em;color:var(--musgo)}\n  .deckwrap.on-dark .counter{color:rgba(250,250,246,.75)}\n  nav.dots{position:absolute;z-index:40;right:clamp(12px,2vw,28px);top:50%;transform:translateY(-50%);\n    display:flex;flex-direction:column;gap:11px}\n  nav.dots a{width:6px;height:6px;border-radius:50%;background:var(--musgo);opacity:.35;\n    transition:opacity .3s,transform .3s}\n  nav.dots a.on{opacity:1;transform:scale(1.5);background:var(--ink)}\n  .deckwrap.on-dark nav.dots a{background:#FAFAF6}\n  .hint{position:absolute;z-index:40;right:var(--mx);bottom:22px;font-size:11px;letter-spacing:.22em;\n    color:var(--musgo);text-transform:uppercase;transition:opacity .4s}\n  .deckwrap.last .hint{opacity:0}\n  .deckwrap.on-dark .hint{color:rgba(250,250,246,.6)}\n\n  section{min-height:100%;scroll-snap-align:start;position:relative;display:flex;\n    flex-direction:column;justify-content:center;padding:clamp(80px,11vh,132px) clamp(20px,7vw,120px);\n    overflow:hidden}\n  .eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--musgo);\n    margin-bottom:clamp(18px,3.4vh,38px)}\n  .eyebrow b{font-weight:400;color:var(--banana)}\n  h1,h2{font-family:var(--ext);font-weight:400;letter-spacing:-.01em}\n  h2.big{font-size:clamp(28px,4vw,54px);line-height:1.1;max-width:17ch}\n  .split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,4vw,72px)}\n  @media(max-width:900px){.split{grid-template-columns:1fr;gap:18px}}\n  .apoio{font-family:var(--sf);font-size:14.5px;line-height:1.72;color:var(--musgo);max-width:52ch}\n  .apoio b{color:var(--ink);font-weight:600}\n  .apoio.destaque{font-size:16px;color:var(--ink)}\n  .nota{font-family:var(--sf);font-size:12.5px;line-height:1.65;color:var(--musgo);max-width:74ch;\n    margin-top:clamp(14px,2.4vh,26px);padding-top:12px;border-top:1px solid var(--linha)}\n  .nota b{color:var(--ink);font-weight:600}\n  .twocol{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,48px)}\n  @media(max-width:820px){.twocol{grid-template-columns:1fr;gap:6px}}\n\n  .rv{opacity:0;transform:translateY(24px);\n    transition:opacity .85s cubic-bezier(.2,.6,.2,1),transform .85s cubic-bezier(.2,.6,.2,1)}\n  section.in .rv{opacity:1;transform:none}\n  section.in .rv:nth-child(2){transition-delay:.07s}\n  section.in .rv:nth-child(3){transition-delay:.13s}\n  section.in .rv:nth-child(4){transition-delay:.19s}\n\n  .s{font-family:var(--mono);font-style:normal;font-size:9px;vertical-align:super;\n    color:var(--musgo);opacity:.85;margin-left:2px;letter-spacing:0}\n  .s::before{content:'['}.s::after{content:']'}\n\n  .capa{justify-content:flex-end;padding:clamp(60px,10vh,110px) var(--mx) clamp(40px,9vh,84px)}\n  .capa .frame{position:relative;flex:1;min-height:58svh;border-radius:30px;overflow:hidden;\n    display:flex;align-items:center;justify-content:center}\n  .capa .bgimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}\n  .capa .frame::after{content:'';position:absolute;inset:0;background:rgba(12,22,14,.42)}\n  .capa .mid{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;\n    gap:24px;text-align:center;padding:0 24px}\n  .capa .lockup{display:flex;align-items:center;gap:18px}\n  .capa .lockup .d2m{height:36px}\n  .capa .lockup .grm{height:22px}\n  .capa .lockup .plus{color:#FAFAF6;font-size:22px}\n  .capa .sub{color:#FAFAF6;font-size:11.5px;letter-spacing:.24em;text-transform:uppercase}\n  .capa .caption{display:flex;justify-content:space-between;align-items:baseline;gap:26px;\n    padding:22px 4px 0}\n  .capa .frase-cap{font-family:var(--ext);font-size:clamp(16px,2vw,25px);line-height:1.35;max-width:34ch}\n  .capa .meta{font-family:var(--sf);font-size:12px;color:var(--musgo);white-space:nowrap}\n  .capa .frase-cap i{font-style:normal;color:var(--banana)}\n  @media(max-width:820px){.capa .caption{flex-direction:column;gap:10px}}\n\n  .indice{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(24px,5vw,90px);\n    border-top:1px solid var(--linha)}\n  .indice a{display:flex;align-items:baseline;gap:16px;padding:11px 0;\n    border-bottom:1px solid var(--linha);text-decoration:none;color:var(--ink)}\n  .indice a:hover{color:var(--ok)}\n  .indice .n{font-family:var(--mono);font-size:10.5px;color:var(--musgo);min-width:20px}\n  .indice .t{font-family:var(--ext);font-size:clamp(13px,1.2vw,15.5px)}\n  @media(max-width:820px){.indice{grid-template-columns:1fr}}\n\n  .statement h1{font-size:clamp(30px,5.2vw,68px);line-height:1.04;max-width:17ch}\n\n  .kfour{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--linha-2);\n    margin-bottom:clamp(16px,2.8vh,32px)}\n  .kfour .kf{padding:clamp(13px,2.2vh,22px) 22px clamp(13px,2.2vh,22px) 0;\n    border-bottom:1px solid var(--linha);border-right:1px solid var(--linha)}\n  .kfour .kf:last-child{border-right:0}\n  .kfour .kf.dst .k{color:var(--ok)}\n  .kfour .kf + .kf{padding-left:clamp(16px,1.7vw,26px)}\n  .kfour .k{font-family:var(--ext);font-size:clamp(21px,2.5vw,34px);line-height:1;display:block;\n    letter-spacing:-.02em}\n  .kfour .lb{font-family:var(--sf);font-size:11.5px;display:block;margin-top:9px;font-weight:600}\n  .kfour .d{font-family:var(--sf);font-size:11px;color:var(--musgo);display:block;margin-top:4px;line-height:1.45}\n  @media(max-width:900px){.kfour{grid-template-columns:1fr 1fr}}\n\n  .fontes{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(24px,4vw,64px);\n    border-top:1px solid var(--linha)}\n  .fontes .f{display:grid;grid-template-columns:24px 1fr;gap:12px;padding:11px 0;\n    border-bottom:1px solid var(--linha)}\n  .fontes .fn{font-family:var(--mono);font-size:11px;color:var(--musgo);padding-top:2px}\n  .fontes .ft{font-family:var(--ext);font-size:13px;line-height:1.35}\n  .fontes .fd{font-family:var(--sf);font-size:11.5px;color:var(--musgo);line-height:1.55;margin-top:4px}\n  .fontes .fd b{color:var(--ink);font-weight:600}\n  .fontes .fd code{font-family:var(--mono);font-size:10.5px}\n  @media(max-width:900px){.fontes{grid-template-columns:1fr}}\n\n  .capt{font-family:var(--sf);font-size:11px;line-height:1.55;color:var(--musgo);\n    max-width:86ch;margin-bottom:clamp(10px,1.6vh,16px);padding-left:11px;\n    border-left:2px solid var(--linha-2)}\n  .capt b{color:var(--ink);font-weight:600}\n  .chart{width:100%;overflow-x:auto}\n  .chart svg{display:block;width:100%;height:auto;min-width:520px;overflow:visible}\n  .gl{stroke:var(--linha);stroke-width:1}\n  .ca{font-family:var(--mono);font-size:9.5px;fill:var(--musgo)}\n  .ca.on{fill:var(--ink);font-weight:600}\n  .cv{font-family:var(--mono);font-size:9.5px;fill:var(--ink)}\n  .cl{font-family:var(--sf);font-size:11.5px;fill:var(--ink);font-weight:600}\n  .cs{font-family:var(--sf);font-size:10.5px;fill:var(--musgo)}\n  .cl2{font-family:var(--sf);font-size:12.5px;fill:var(--ink)}\n  .cs2{font-family:var(--sf);font-size:10.5px;fill:var(--musgo)}\n  .cv2{font-family:var(--mono);font-size:12px;fill:var(--ink);font-weight:600}\n  .cun{font-family:var(--sf);font-size:10px;fill:var(--musgo);font-weight:400}\n\n  .eixos{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,26px);\n    margin-top:clamp(26px,5vh,54px)}\n  .eixos .ex{border-top:2px solid var(--ink);padding-top:15px}\n  .eixos .ex.dst{border-top-color:var(--ok)}\n  .eixos .ex.dst .t{color:var(--ok)}\n  .eixos .n{font-family:var(--mono);font-size:11px;color:var(--musgo)}\n  .eixos .t{font-family:var(--ext);font-size:clamp(17px,1.9vw,24px);margin:7px 0 0}\n  .eixos .v{font-family:var(--ext);font-size:clamp(22px,2.7vw,36px);line-height:1;\n    letter-spacing:-.02em;margin-top:10px}\n  .eixos .ex.dst .v{color:var(--ok)}\n  .eixos .v em{font-style:normal;font-size:.4em;color:var(--musgo);letter-spacing:0;margin-left:3px}\n  .eixos p{font-family:var(--sf);font-size:12.5px;color:var(--musgo);line-height:1.6;margin-top:9px}\n  @media(max-width:820px){.eixos{grid-template-columns:1fr;gap:16px}}\n\n  .tot{margin-top:clamp(16px,2.8vh,30px);padding-top:14px;border-top:2px solid var(--ink);\n    display:flex;flex-direction:column;gap:3px}\n  .tot .tl{font-family:var(--sf);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--musgo)}\n  .tot .tv{font-family:var(--ext);font-size:clamp(24px,3vw,38px);line-height:1.05;letter-spacing:-.02em;color:var(--ok)}\n  .tot .tv em{font-style:normal;font-size:.42em;color:var(--musgo);letter-spacing:0}\n  .tot .tn{font-family:var(--sf);font-size:11.5px;color:var(--musgo);line-height:1.55;max-width:62ch;margin-top:3px}\n\n  .calc{display:flex;align-items:flex-end;gap:clamp(8px,1.6vw,22px);flex-wrap:wrap;\n    margin-top:clamp(18px,3vh,32px)}\n  .calc .c{border-top:2px solid var(--linha-2);padding-top:9px;min-width:120px}\n  .calc .c.dst{border-top-color:var(--ok)}\n  .calc .ck{font-family:var(--ext);font-size:clamp(20px,2.6vw,34px);line-height:1;display:block;letter-spacing:-.02em}\n  .calc .c.dst .ck{color:var(--ok)}\n  .calc .cl{font-family:var(--sf);font-size:11px;color:var(--musgo);display:block;margin-top:6px;line-height:1.4}\n  .calc .op{font-family:var(--ext);font-size:17px;color:var(--musgo);padding-bottom:16px}\n\n  .ondas{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,26px)}\n  .ondas.duas{grid-template-columns:1fr 1fr;gap:clamp(20px,3.4vw,56px)}\n  .ondas.duas .t{font-size:clamp(16px,1.8vw,22px)}\n  .ondas.duas li{font-size:12.5px;padding:6px 0 6px 13px}\n  .ondas .onda{border-top:2px solid var(--ink);padding-top:14px}\n  .ondas .fase{font-family:var(--mono);font-size:11px;color:var(--ok);font-weight:600}\n  .ondas .t{font-family:var(--ext);font-size:clamp(14px,1.5vw,18px);margin:7px 0 10px;line-height:1.25}\n  .ondas ul{list-style:none}\n  .ondas li{font-family:var(--sf);font-size:11.5px;line-height:1.55;color:var(--musgo);\n    padding:5px 0 5px 12px;position:relative}\n  .ondas li::before{content:'';position:absolute;left:0;top:12px;width:4px;height:4px;\n    border-radius:50%;background:var(--linha-2)}\n  .ondas li b{color:var(--ink);font-weight:600}\n  .ondas li code{font-family:var(--mono);font-size:10.5px}\n  @media(max-width:900px){.ondas{grid-template-columns:1fr 1fr}}\n  @media(max-width:560px){.ondas{grid-template-columns:1fr}}\n\n  .selva{background:var(--verde-fundo);color:#FAFAF6}\n  .selva .bg{position:absolute;inset:0}\n  .selva .bg img{width:100%;height:100%;object-fit:cover}\n  .selva::after{content:'';position:absolute;inset:0;background:rgba(12,22,14,.55)}\n  .fecho .mid{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;\n    text-align:center;gap:clamp(20px,3.6vh,38px)}\n  .fecho .frase{font-family:var(--ext);font-size:clamp(17px,2.4vw,32px);line-height:1.35;max-width:26ch}\n  .fecho .frase i{font-style:normal;color:var(--banana)}\n  .fecho .lockup{display:flex;align-items:center;gap:15px}\n  .fecho .lockup .plus{color:#FAFAF6}\n  .fecho .sub{font-family:var(--sf);font-size:12px;color:rgba(250,250,246,.72)}\n  .ring.branco{filter:brightness(0) invert(1)}\n\n  @media(max-width:900px){\n    .deckroot{scroll-snap-type:y proximity}\n    nav.dots{display:none}\n    section{padding:70px 20px 78px}\n    .counter,.hint{bottom:16px}\n    .eyebrow{margin-bottom:16px}\n    .chart svg{min-width:460px}\n  }\n  .gwrap{position:relative;height:100vh;height:100svh;overflow:hidden;display:flex;align-items:center;\n    justify-content:center;background:var(--verde-fundo);font-family:var(--lt)}\n  .gwrap .gbg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}\n  .gwrap::after{content:'';position:absolute;inset:0;background:rgba(12,22,14,.5)}\n  .gcard{position:relative;z-index:1;background:var(--paper);border-radius:20px;padding:40px 36px 32px;\n    width:min(380px,88vw);text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.45)}\n  .glock{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:14px}\n  .glock img{filter:brightness(0);display:block}\n  .glock span{font-family:var(--lt);font-size:15px;color:var(--ink)}\n  .gsub{font-family:var(--lt);font-size:10px;letter-spacing:.24em;text-transform:uppercase;\n    color:var(--musgo);margin-bottom:26px}\n  .ginput{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid var(--linha);\n    border-radius:10px;background:#fff;font-size:15px;text-align:center;outline:none;font-family:var(--sf)}\n  .ginput:focus{border-color:var(--verde);box-shadow:0 0 0 3px rgba(36,66,47,.14)}\n  .gbtn{width:100%;margin-top:12px;padding:13px;border:none;border-radius:10px;background:var(--verde);\n    color:var(--paper);font-size:12px;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;font-family:var(--lt)}\n  .gbtn:hover{background:#1C3526}\n  .gerr{display:none;color:var(--hibisco);font-size:13px;margin-top:12px;font-family:var(--sf)}\n  .shake{animation:gsh .4s}\n  @keyframes gsh{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(9px)}\n    60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}\n\n  :focus-visible{outline:2px solid var(--banana);outline-offset:4px}\n  @media (prefers-reduced-motion:reduce){\n    .deckroot{scroll-behavior:auto}\n    .rv{opacity:1;transform:none;transition:none}\n  }\n`,\n  render(d2){ return d2.state.unlocked ? DECK : GATE },\n  mounted(d2){\n    injectFonts()\n    let ok=OPEN\n    try{ if(sessionStorage.getItem(SKEY)==='1') ok=true }catch(e){}\n    try{ if((location.search||'').indexOf('k='+PASS)>-1) ok=true }catch(e){}\n    const check=()=>{\n      const inp=d2.$('.ginput'); if(!inp) return\n      if(inp.value===PASS){\n        try{ sessionStorage.setItem(SKEY,'1') }catch(e){}\n        d2.state.unlocked=true\n      } else {\n        const c=d2.$('.gcard'), er=d2.$('.gerr')\n        if(er) er.style.display='block'\n        if(c){ c.classList.remove('shake'); void c.offsetWidth; c.classList.add('shake') }\n        if(inp.select) inp.select()\n      }\n    }\n    d2.on('.gbtn','click',check)\n    d2.on('.ginput','keydown',e=>{ if(e.key==='Enter') check() })\n    if(ok) d2.state.unlocked=true\n    initDeck(d2)\n  },\n  updated(d2){ initDeck(d2) }\n}"}}}}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"component":"data2-core-types@Getter","displayName":"isData2User","params":{"module":{"component":"data2-core-functions@Match","params":{"pattern":{"component":"data2-core-types@Regex","params":{"pattern":"@data2\\.app$","flags":"i"}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}}},"prop":{"component":"data2-core-primitives@String","params":{"content":"0"}}}},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"component":"data2-core-flow@If","displayName":"management exception never picks the system","params":{"compare":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-logical-operators@Not","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}}}]}},"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"d2_app":"management"}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-10-29T19:05:43.007Z","updateMetadata":{"updatedBy":{"user":"5f1609be1ca96def427e1559"}}},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"FileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.217Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.254Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.347Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6aa81fa80e458694eaea6aab","component":"data2-core-primitives@Artboard","system":"6a62e4640613f70fa449ff5d","displayName":"Custo do Bot — Deck","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Custo do Bot — Deck"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"diZSxm9BojmU7ibOJHb6Q"},{"_id":"7d4af965e79c82de49e0af13","parent":"6aa81fa80e458694eaea6aab","component":"granado-app@kCustoBotDeck","system":"6a62e4640613f70fa449ff5d","displayName":"Custo do Bot — Deck","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"bpDX2FD7XFtcXIeZRjj5U"}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6aa81fb0f4b70a9a69322295","displayName":"Custo do Bot B2B — Deck","reference":"6venwe5BJdCutZ6nG9HpG","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"custo-bot"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"diZSxm9BojmU7ibOJHb6Q"}}},"system":"6a62e4640613f70fa449ff5d","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}