{{ .Params.lead | safeHTML }}
+ Open The Docs + {{ .Content }} +Start your journey with DefectDojo with our New User Checklist.
+Learn how to import data from 190+ supported security tools here.
+Use the Report Builder to present customizable reports of Findings.
+Check out live events, upcoming features and connect with other security professionals on our Community Page.
+Ready to go Pro? Create an account here.
+Need some help? Pro users can send an email to support@defectdojo.com
++ {% trans "Hello" %}, +
++ {% blocktranslate trimmed with engagement_name=engagement.name engagement_product=engagement.product prod_url=product_url|full_url eng_url=engagement_url|full_url%} + The engagement "{{ engagement_name }}" has been closed in the product "{{ engagement_product }}". It can be viewed here: {{product}} / {{ engagement_name }} + {% endblocktranslate %} +
++ {% url 'notifications' as notification_url %} + {% trans "You can manage your notification settings here" %}: {{ notification_url|full_url }} +
+ {% if system_settings.disclaimer and system_settings.disclaimer.strip %} +{{ system_settings.disclaimer }}
+tags from HTML strings to avoid importing yet-another-library. + Args: html_string: The HMTL string to remove
tags from Returns: The original string stipped of paragraph tags + """ return re.sub(r"
|
", "", html_string) @@ -193,12 +203,13 @@ def _convert_whitehat_sentinel_vulns_to_dojo_finding( whitehat_sentinel_vulns: The vuln dictionary from WhiteHat Sentinel vuln API test: The test ID that the DefectDojo finding should be associated with Returns: A DefectDojo Finding object + """ dupes = {} for whitehat_vuln in whitehat_sentinel_vulns: date_created = whitehat_vuln["found"].split("T")[0] - mitigated_ts = whitehat_vuln.get("closed".split("T")[0], None) + mitigated_ts = whitehat_vuln.get("closed", None) if mitigated_ts is not None: mitigated_ts = datetime.strptime(mitigated_ts, "%Y-%m-%dT%H:%M:%SZ") cwe = self._parse_cwe_from_tags( diff --git a/dojo/tools/xanitizer/parser.py b/dojo/tools/xanitizer/parser.py index b6a7cabdd55..b4eca87b40f 100644 --- a/dojo/tools/xanitizer/parser.py +++ b/dojo/tools/xanitizer/parser.py @@ -85,15 +85,9 @@ def generate_title(self, finding, line): cl = finding.find("class") file = finding.find("file") if pckg is not None and cl is not None: - if line: - title = f"{title} ({pckg.text}.{cl.text}:{line})" - else: - title = f"{title} ({pckg.text}.{cl.text})" + title = f"{title} ({pckg.text}.{cl.text}:{line})" if line else f"{title} ({pckg.text}.{cl.text})" else: - if line: - title = f"{title} ({file.text}:{line})" - else: - title = f"{title} ({file.text})" + title = f"{title} ({file.text}:{line})" if line else f"{title} ({file.text})" return title diff --git a/dojo/user/views.py b/dojo/user/views.py index f43b6b7b600..0f8914e4adf 100644 --- a/dojo/user/views.py +++ b/dojo/user/views.py @@ -227,10 +227,7 @@ def view_profile(request): group_members = get_authorized_group_members_for_user(user) user_contact = user.usercontactinfo if hasattr(user, "usercontactinfo") else None - if user_contact is None: - contact_form = UserContactInfoForm() - else: - contact_form = UserContactInfoForm(instance=user_contact) + contact_form = UserContactInfoForm() if user_contact is None else UserContactInfoForm(instance=user_contact) global_role = user.global_role if hasattr(user, "global_role") else None if global_role is None: @@ -393,16 +390,10 @@ def edit_user(request, uid): form = EditDojoUserForm(instance=user) user_contact = user.usercontactinfo if hasattr(user, "usercontactinfo") else None - if user_contact is None: - contact_form = UserContactInfoForm() - else: - contact_form = UserContactInfoForm(instance=user_contact) + contact_form = UserContactInfoForm() if user_contact is None else UserContactInfoForm(instance=user_contact) global_role = user.global_role if hasattr(user, "global_role") else None - if global_role is None: - global_role_form = GlobalRoleForm() - else: - global_role_form = GlobalRoleForm(instance=global_role) + global_role_form = GlobalRoleForm() if global_role is None else GlobalRoleForm(instance=global_role) if request.method == "POST": form = EditDojoUserForm(request.POST, instance=user) diff --git a/dojo/utils.py b/dojo/utils.py index c57695c09d9..8c2df2be847 100644 --- a/dojo/utils.py +++ b/dojo/utils.py @@ -11,6 +11,7 @@ from collections.abc import Callable from datetime import date, datetime, timedelta from math import pi, sqrt +from pathlib import Path import bleach import crum @@ -88,6 +89,7 @@ def do_false_positive_history(finding, *args, **kwargs): Args: finding (:model:`dojo.Finding`): Finding to be replicated + """ to_mark_as_fp = set() @@ -149,6 +151,7 @@ def match_finding_to_existing_findings(finding, product=None, engagement=None, t product (:model:`dojo.Product`, optional): Product to filter findings by engagement (:model:`dojo.Engagement`, optional): Engagement to filter findings by test (:model:`dojo.Test`, optional): Test to filter findings by + """ if product: custom_filter_type = "product" @@ -781,11 +784,7 @@ def is_title_in_breadcrumbs(title): if breadcrumbs is None: return False - for breadcrumb in breadcrumbs: - if breadcrumb.get("title") == title: - return True - - return False + return any(breadcrumb.get("title") == title for breadcrumb in breadcrumbs) def get_punchcard_data(objs, start_date, weeks, view="Finding"): @@ -1327,15 +1326,9 @@ def build_query(query_string, search_fields): for field_name in search_fields: q = Q(**{f"{field_name}__icontains": term}) - if or_query: - or_query = or_query | q - else: - or_query = q + or_query = or_query | q if or_query else q - if query: - query = query & or_query - else: - query = or_query + query = query & or_query if query else or_query return query @@ -1378,11 +1371,12 @@ def get_page_items_and_count(request, items, page_size, prefix="", do_count=True def handle_uploaded_threat(f, eng): - _name, extension = os.path.splitext(f.name) + path = Path(f.name) + extension = path.suffix # Check if threat folder exist. - if not os.path.isdir(settings.MEDIA_ROOT + "/threat/"): + if not Path(settings.MEDIA_ROOT + "/threat/").is_dir(): # Create the folder - os.mkdir(settings.MEDIA_ROOT + "/threat/") + Path(settings.MEDIA_ROOT + "/threat/").mkdir() with open(settings.MEDIA_ROOT + f"/threat/{eng.id}{extension}", "wb+") as destination: for chunk in f.chunks(): @@ -1392,7 +1386,8 @@ def handle_uploaded_threat(f, eng): def handle_uploaded_selenium(f, cred): - _name, extension = os.path.splitext(f.name) + path = Path(f.name) + extension = path.suffix with open(settings.MEDIA_ROOT + f"/selenium/{cred.id}{extension}", "wb+") as destination: for chunk in f.chunks(): @@ -1848,7 +1843,7 @@ def get_return_url(request): return_url = request.POST.get("return_url", None) if return_url is None or not return_url.strip(): # for some reason using request.GET.get('return_url') never works - return_url = request.GET["return_url"] if "return_url" in request.GET else None + return_url = request.GET["return_url"] if "return_url" in request.GET else None # noqa: SIM401 return return_url or None @@ -2047,7 +2042,7 @@ def _create_notifications(): if sla_age is None: sla_age = 0 - if (sla_age < 0) and (settings.SLA_NOTIFY_POST_BREACH < abs(sla_age)): + if (sla_age < 0) and (abs(sla_age) > settings.SLA_NOTIFY_POST_BREACH): post_breach_no_notify_count += 1 # Skip finding notification if breached for too long logger.debug(f"Finding {finding.id} breached the SLA {abs(sla_age)} days ago. Skipping notifications.") @@ -2299,7 +2294,7 @@ def get_product(obj): if not obj: return None - if isinstance(obj, Finding) or isinstance(obj, Finding_Group): + if isinstance(obj, Finding | Finding_Group): return obj.test.engagement.product if isinstance(obj, Test): @@ -2696,7 +2691,9 @@ def generate_file_response_from_file_path( ) -> FileResponse: """Serve an local file in a uniformed way.""" # Determine the file path - file_path_without_extension, file_extension = os.path.splitext(file_path) + path = Path(file_path) + file_path_without_extension = path.parent / path.stem + file_extension = path.suffix # Determine the file name if not supplied if file_name is None: file_name = file_path_without_extension.rsplit("/")[-1] diff --git a/dojo/views.py b/dojo/views.py index ff0faed8c26..df65be4d6bd 100644 --- a/dojo/views.py +++ b/dojo/views.py @@ -1,5 +1,6 @@ import logging import os +from pathlib import Path from auditlog.models import LogEntry from django.conf import settings @@ -150,7 +151,7 @@ def manage_files(request, oid, obj_type): for o in files_formset.deleted_objects: logger.debug("removing file: %s", o.file.name) - os.remove(os.path.join(settings.MEDIA_ROOT, o.file.name)) + Path(os.path.join(settings.MEDIA_ROOT, o.file.name)).unlink() for o in files_formset.new_objects: logger.debug("adding file: %s", o.file.name) @@ -161,7 +162,7 @@ def manage_files(request, oid, obj_type): finding__isnull=True) for o in orphan_files: logger.debug("purging orphan file: %s", o.file.name) - os.remove(os.path.join(settings.MEDIA_ROOT, o.file.name)) + Path(os.path.join(settings.MEDIA_ROOT, o.file.name)).unlink() o.delete() messages.add_message( diff --git a/helm/defectdojo/.helmignore b/helm/defectdojo/.helmignore index 50af0317254..70909a86d60 100644 --- a/helm/defectdojo/.helmignore +++ b/helm/defectdojo/.helmignore @@ -20,3 +20,4 @@ .idea/ *.tmproj .vscode/ +README.md diff --git a/helm/defectdojo/Chart.lock b/helm/defectdojo/Chart.lock index 611d1100a44..7a0e49b95de 100644 --- a/helm/defectdojo/Chart.lock +++ b/helm/defectdojo/Chart.lock @@ -1,12 +1,12 @@ dependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami - version: 16.1.0 + version: 16.2.0 - name: postgresql-ha repository: https://charts.bitnami.com/bitnami version: 9.4.11 - name: redis repository: https://charts.bitnami.com/bitnami version: 19.6.4 -digest: sha256:499d18e7070e7752e0dccfa2187d755570e105eb21cae37d6f0623a333997db8 -generated: "2024-10-30T17:58:45.866148081Z" +digest: sha256:0d2e729a1b07543cb813f80f5d05c67ad56817f1b44911e08245e43868f49301 +generated: "2024-11-14T10:51:48.400717864Z" diff --git a/helm/defectdojo/Chart.yaml b/helm/defectdojo/Chart.yaml index 2751a5ca7b6..57849d3c012 100644 --- a/helm/defectdojo/Chart.yaml +++ b/helm/defectdojo/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 -appVersion: "2.40.3" +appVersion: "2.41.0" description: A Helm chart for Kubernetes to install DefectDojo name: defectdojo -version: 1.6.161 +version: 1.6.162 icon: https://www.defectdojo.org/img/favicon.ico maintainers: - name: madchap @@ -10,7 +10,7 @@ maintainers: url: https://github.com/DefectDojo/django-DefectDojo dependencies: - name: postgresql - version: ~16.1.0 + version: ~16.2.0 repository: "https://charts.bitnami.com/bitnami" condition: postgresql.enabled - name: postgresql-ha diff --git a/helm/defectdojo/README.md b/helm/defectdojo/README.md new file mode 120000 index 00000000000..5c0dd98ed0f --- /dev/null +++ b/helm/defectdojo/README.md @@ -0,0 +1 @@ +../../readme-docs/KUBERNETES.md \ No newline at end of file diff --git a/helm/defectdojo/templates/celery-beat-deployment.yaml b/helm/defectdojo/templates/celery-beat-deployment.yaml index 7eda46b8680..aedbb117275 100644 --- a/helm/defectdojo/templates/celery-beat-deployment.yaml +++ b/helm/defectdojo/templates/celery-beat-deployment.yaml @@ -10,6 +10,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: replicas: {{ .Values.celery.beat.replicas }} {{- if .Values.revisionHistoryLimit }} @@ -28,8 +31,11 @@ spec: defectdojo.org/subcomponent: beat app.kubernetes.io/name: {{ include "defectdojo.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} - {{- if .Values.podLabels }} - {{- toYaml .Values.podLabels | nindent 8 }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} {{- end }} annotations: {{- with .Values.celery.beat.annotations }} @@ -66,17 +72,14 @@ spec: path: {{ .hostPath }} {{- end }} {{- end }} - {{- if .Values.dbMigrationChecker.enabled }} + {{- if or .Values.dbMigrationChecker.enabled .Values.cloudsql.enabled }} initContainers: - {{$data := dict "fullName" $fullName }} - {{- $newContext := merge . (dict "fullName" $fullName) }} - {{- include "dbMigrationChecker" $newContext | nindent 6 }} {{- end }} - containers: {{- if .Values.cloudsql.enabled }} - name: cloudsql-proxy image: {{ .Values.cloudsql.image.repository }}:{{ .Values.cloudsql.image.tag }} imagePullPolicy: {{ .Values.cloudsql.image.pullPolicy }} + restartPolicy: Always securityContext: runAsNonRoot: true command: ["/cloud_sql_proxy"] @@ -92,6 +95,12 @@ spec: - "-ip_address_types=PRIVATE" {{- end }} {{- end }} + {{- if .Values.dbMigrationChecker.enabled }} + {{$data := dict "fullName" $fullName }} + {{- $newContext := merge . (dict "fullName" $fullName) }} + {{- include "dbMigrationChecker" $newContext | nindent 6 }} + {{- end }} + containers: - command: - /entrypoint-celery-beat.sh name: celery @@ -143,8 +152,8 @@ spec: secretKeyRef: name: {{ $fullName }} key: DD_SECRET_KEY - {{- if .Values.extraEnv }} - {{- toYaml .Values.extraEnv | nindent 8 }} + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 8 }} {{- end }} resources: {{- toYaml .Values.celery.beat.resources | nindent 10 }} diff --git a/helm/defectdojo/templates/celery-worker-deployment.yaml b/helm/defectdojo/templates/celery-worker-deployment.yaml index f21be7a13be..c9505959bda 100644 --- a/helm/defectdojo/templates/celery-worker-deployment.yaml +++ b/helm/defectdojo/templates/celery-worker-deployment.yaml @@ -10,6 +10,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: replicas: {{ .Values.celery.worker.replicas }} {{- if .Values.revisionHistoryLimit }} @@ -28,8 +31,11 @@ spec: defectdojo.org/subcomponent: worker app.kubernetes.io/name: {{ include "defectdojo.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} - {{- if .Values.podLabels }} - {{- toYaml .Values.podLabels | nindent 8 }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} {{- end }} annotations: {{- with .Values.celery.worker.annotations }} @@ -64,17 +70,14 @@ spec: path: {{ .hostPath }} {{- end }} {{- end }} - {{- if .Values.dbMigrationChecker.enabled }} + {{- if or .Values.dbMigrationChecker.enabled .Values.cloudsql.enabled }} initContainers: - {{$data := dict "fullName" $fullName }} - {{- $newContext := merge . (dict "fullName" $fullName) }} - {{- include "dbMigrationChecker" $newContext | nindent 6 }} {{- end }} - containers: {{- if .Values.cloudsql.enabled }} - name: cloudsql-proxy image: {{ .Values.cloudsql.image.repository }}:{{ .Values.cloudsql.image.tag }} imagePullPolicy: {{ .Values.cloudsql.image.pullPolicy }} + restartPolicy: Always securityContext: runAsNonRoot: true command: ["/cloud_sql_proxy"] @@ -90,6 +93,12 @@ spec: - "-ip_address_types=PRIVATE" {{- end }} {{- end }} + {{- if .Values.dbMigrationChecker.enabled }} + {{$data := dict "fullName" $fullName }} + {{- $newContext := merge . (dict "fullName" $fullName) }} + {{- include "dbMigrationChecker" $newContext | nindent 6 }} + {{- end }} + containers: - name: celery image: "{{ template "celery.repository" . }}:{{ .Values.tag }}" imagePullPolicy: {{ .Values.imagePullPolicy }} @@ -138,8 +147,8 @@ spec: secretKeyRef: name: {{ $fullName }} key: DD_SECRET_KEY - {{- if .Values.extraEnv }} - {{- toYaml .Values.extraEnv | nindent 8 }} + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 8 }} {{- end }} resources: {{- toYaml .Values.celery.worker.resources | nindent 10 }} diff --git a/helm/defectdojo/templates/configmap.yaml b/helm/defectdojo/templates/configmap.yaml index 5ae741f0abc..0d8c4a238e1 100644 --- a/helm/defectdojo/templates/configmap.yaml +++ b/helm/defectdojo/templates/configmap.yaml @@ -8,6 +8,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} data: DD_ADMIN_USER: {{ .Values.admin.user | default "admin" }} DD_ADMIN_MAIL: {{ .Values.admin.Mail | default "admin@defectdojo.local" }} @@ -45,5 +48,5 @@ data: {{- if .Values.django.uwsgi.certificates.enabled }} REQUESTS_CA_BUNDLE: {{ .Values.django.uwsgi.certificates.certMountPath }}{{ .Values.django.uwsgi.certificates.certFileName }} {{- end }} -{{- if .Values.extraConfigs }} -{{ toYaml .Values.extraConfigs | indent 2 }}{{- end }} +{{- with .Values.extraConfigs }} + {{- toYaml . | nindent 2 }}{{- end }} diff --git a/helm/defectdojo/templates/django-deployment.yaml b/helm/defectdojo/templates/django-deployment.yaml index 0d82b86538c..5ef3dec50cc 100644 --- a/helm/defectdojo/templates/django-deployment.yaml +++ b/helm/defectdojo/templates/django-deployment.yaml @@ -9,6 +9,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: replicas: {{ .Values.django.replicas }} {{- if .Values.revisionHistoryLimit }} @@ -25,9 +28,12 @@ spec: defectdojo.org/component: django app.kubernetes.io/name: {{ include "defectdojo.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} - {{- if .Values.podLabels }} - {{- toYaml .Values.podLabels | nindent 8 }} - {{- end }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} annotations: {{- with .Values.django.annotations }} {{- toYaml . | nindent 8 }} @@ -82,17 +88,14 @@ spec: emptyDir: {} {{- end }} {{- end }} - {{- if .Values.dbMigrationChecker.enabled }} + {{- if or .Values.dbMigrationChecker.enabled .Values.cloudsql.enabled }} initContainers: - {{$data := dict "fullName" $fullName }} - {{- $newContext := merge . (dict "fullName" $fullName) }} - {{- include "dbMigrationChecker" $newContext | nindent 6 }} {{- end }} - containers: {{- if .Values.cloudsql.enabled }} - name: cloudsql-proxy image: {{ .Values.cloudsql.image.repository }}:{{ .Values.cloudsql.image.tag }} imagePullPolicy: {{ .Values.cloudsql.image.pullPolicy }} + restartPolicy: Always securityContext: runAsNonRoot: true command: ["/cloud_sql_proxy"] @@ -108,6 +111,12 @@ spec: - "-ip_address_types=PRIVATE" {{- end }} {{- end }} + {{- if .Values.dbMigrationChecker.enabled }} + {{$data := dict "fullName" $fullName }} + {{- $newContext := merge . (dict "fullName" $fullName) }} + {{- include "dbMigrationChecker" $newContext | nindent 6 }} + {{- end }} + containers: {{- if and .Values.monitoring.enabled .Values.monitoring.prometheus.enabled }} - name: metrics image: {{ .Values.monitoring.prometheus.image }} @@ -197,8 +206,8 @@ spec: value: {{- if or .Values.django.ingress.activateTLS .Values.django.nginx.tls.enabled }} "True" {{- else }} "False" {{- end }} - name: DD_CSRF_COOKIE_SECURE value: {{- if or .Values.django.ingress.activateTLS .Values.django.nginx.tls.enabled }} "True" {{- else }} "False" {{- end }} - {{- if .Values.extraEnv }} - {{- toYaml .Values.extraEnv | nindent 8 }} + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 8 }} {{- end }} {{- if .Values.django.uwsgi.livenessProbe.enabled }} livenessProbe: @@ -255,6 +264,7 @@ spec: value: '{{ .Values.django.nginx.tls.enabled }}' - name: GENERATE_TLS_CERTIFICATE value: '{{ .Values.django.nginx.tls.generateCertificate }}' + {{- if .Values.django.uwsgi.livenessProbe.enabled }} livenessProbe: httpGet: path: /nginx_health @@ -265,10 +275,13 @@ spec: httpHeaders: - name: Host value: {{ .Values.host }} - initialDelaySeconds: 10 - periodSeconds: 10 - failureThreshold: 6 - {{- if .Values.django.uwsgi.livenessProbe.enabled }} + failureThreshold: {{ .Values.django.uwsgi.livenessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.django.uwsgi.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.django.uwsgi.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.django.uwsgi.livenessProbe.successThreshold }} + timeoutSeconds: {{ .Values.django.uwsgi.livenessProbe.timeoutSeconds }} + {{- end }} + {{- if .Values.django.uwsgi.readinessProbe.enabled }} readinessProbe: httpGet: path: /uwsgi_health @@ -279,11 +292,28 @@ spec: httpHeaders: - name: Host value: {{ .Values.host }} - failureThreshold: {{ .Values.django.uwsgi.livenessProbe.failureThreshold }} - initialDelaySeconds: {{ .Values.django.uwsgi.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.django.uwsgi.livenessProbe.periodSeconds }} - successThreshold: {{ .Values.django.uwsgi.livenessProbe.successThreshold }} - timeoutSeconds: {{ .Values.django.uwsgi.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.django.uwsgi.readinessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.django.uwsgi.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.django.uwsgi.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.django.uwsgi.readinessProbe.successThreshold }} + timeoutSeconds: {{ .Values.django.uwsgi.readinessProbe.timeoutSeconds }} + {{- end }} + {{- if .Values.django.uwsgi.startupProbe.enabled }} + startupProbe: + httpGet: + path: /uwsgi_health + port: http + {{- if .Values.django.nginx.tls.enabled }} + scheme: HTTPS + {{- end }} + httpHeaders: + - name: Host + value: {{ .Values.host }} + failureThreshold: {{ .Values.django.uwsgi.startupProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.django.uwsgi.startupProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.django.uwsgi.startupProbe.periodSeconds }} + successThreshold: {{ .Values.django.uwsgi.startupProbe.successThreshold }} + timeoutSeconds: {{ .Values.django.uwsgi.startupProbe.timeoutSeconds }} {{- end }} resources: {{- toYaml .Values.django.nginx.resources | nindent 10 }} diff --git a/helm/defectdojo/templates/django-ingress.yaml b/helm/defectdojo/templates/django-ingress.yaml index 73ea41404b9..9beecdda923 100644 --- a/helm/defectdojo/templates/django-ingress.yaml +++ b/helm/defectdojo/templates/django-ingress.yaml @@ -14,10 +14,13 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} {{- if or .Values.django.ingress.annotations .Values.gke.useGKEIngress }} annotations: {{- with .Values.django.ingress.annotations }} -{{ toYaml . | indent 4 }} + {{- toYaml . | nindent 4 }} {{- end }} {{- if .Values.gke.useGKEIngress }} kubernetes.io/ingress.class: gce diff --git a/helm/defectdojo/templates/django-service.yaml b/helm/defectdojo/templates/django-service.yaml index b64f3a05570..3823886bbd2 100644 --- a/helm/defectdojo/templates/django-service.yaml +++ b/helm/defectdojo/templates/django-service.yaml @@ -9,6 +9,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} {{- if .Values.django.service.annotations }} annotations: {{- range $key, $value := .Values.django.service.annotations }} diff --git a/helm/defectdojo/templates/extra-secret.yaml b/helm/defectdojo/templates/extra-secret.yaml index a21e8e27ba6..21f9a9507ee 100644 --- a/helm/defectdojo/templates/extra-secret.yaml +++ b/helm/defectdojo/templates/extra-secret.yaml @@ -9,6 +9,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} type: Opaque data: {{- range $key, $value := .Values.extraSecrets }} diff --git a/helm/defectdojo/templates/initializer-job.yaml b/helm/defectdojo/templates/initializer-job.yaml index 0f43b32bba3..60d82b9f2d7 100644 --- a/helm/defectdojo/templates/initializer-job.yaml +++ b/helm/defectdojo/templates/initializer-job.yaml @@ -10,6 +10,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: {{- with .Values.initializer.jobAnnotations }} {{- toYaml . | nindent 4 }} @@ -24,8 +27,11 @@ spec: defectdojo.org/component: initializer app.kubernetes.io/name: {{ include "defectdojo.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} - {{- if .Values.initializer.labels }} - {{- toYaml .Values.initializer.labels | nindent 8 }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 8 }} + {{- end -}} + {{- with .Values.initializer.labels }} + {{- toYaml . | nindent 8 }} {{- end }} annotations: {{- with .Values.initializer.annotations }} @@ -51,28 +57,11 @@ spec: {{- end }} {{- end }} initContainers: - - name: wait-for-db - command: - - '/bin/bash' - - '-c' - - '/wait-for-it.sh ${DD_DATABASE_HOST:-postgres}:${DD_DATABASE_PORT:-5432} -t 300 -s -- /bin/echo Database is up' - image: '{{ template "django.uwsgi.repository" . }}:{{ .Values.tag }}' - imagePullPolicy: {{ .Values.imagePullPolicy }} - {{- if .Values.securityContext.enabled }} - securityContext: - {{- toYaml .Values.securityContext.djangoSecurityContext | nindent 10 }} - {{- end }} - envFrom: - - configMapRef: - name: {{ $fullName }} - - secretRef: - name: {{ $fullName }} - optional: true - containers: {{- if .Values.cloudsql.enabled }} - name: cloudsql-proxy image: {{ .Values.cloudsql.image.repository }}:{{ .Values.cloudsql.image.tag }} imagePullPolicy: {{ .Values.cloudsql.image.pullPolicy }} + restartPolicy: Always securityContext: runAsNonRoot: true command: ["/cloud_sql_proxy"] @@ -88,6 +77,28 @@ spec: - "-ip_address_types=PRIVATE" {{- end }} {{- end }} + - name: wait-for-db + command: + - '/bin/bash' + - '-c' + - '/wait-for-it.sh ${DD_DATABASE_HOST:-postgres}:${DD_DATABASE_PORT:-5432} -t 300 -s -- /bin/echo Database is up' + image: '{{ template "django.uwsgi.repository" . }}:{{ .Values.tag }}' + imagePullPolicy: {{ .Values.imagePullPolicy }} + {{- if .Values.securityContext.enabled }} + securityContext: + {{- toYaml .Values.securityContext.djangoSecurityContext | nindent 10 }} + {{- end }} + envFrom: + - configMapRef: + name: {{ $fullName }} + - secretRef: + name: {{ $fullName }} + optional: true + env: + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 8 }} + {{- end }} + containers: - name: initializer image: "{{ template "initializer.repository" . }}:{{ .Values.tag }}" imagePullPolicy: {{ .Values.imagePullPolicy }} @@ -120,8 +131,8 @@ spec: name: {{ .Values.postgresqlha.postgresql.existingSecret }} key: postgresql-postgres-password {{- end }} - {{- if .Values.extraEnv }} - {{- toYaml .Values.extraEnv | nindent 8 }} + {{- with .Values.extraEnv }} + {{- toYaml . | nindent 8 }} {{- end }} resources: {{- toYaml .Values.initializer.resources | nindent 10 }} diff --git a/helm/defectdojo/templates/media-pvc.yaml b/helm/defectdojo/templates/media-pvc.yaml index 1eba1977e9f..c1ca40050d4 100644 --- a/helm/defectdojo/templates/media-pvc.yaml +++ b/helm/defectdojo/templates/media-pvc.yaml @@ -10,6 +10,9 @@ metadata: app.kubernetes.io/instance: {{ $.Release.Name }} app.kubernetes.io/managed-by: {{ $.Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" $ }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} name: {{ $fullName }} spec: accessModes: diff --git a/helm/defectdojo/templates/network-policy.yaml b/helm/defectdojo/templates/network-policy.yaml index 80c55ddcfa3..ea0017fb1e6 100644 --- a/helm/defectdojo/templates/network-policy.yaml +++ b/helm/defectdojo/templates/network-policy.yaml @@ -9,26 +9,29 @@ metadata: app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} app.kubernetes.io/name: {{ include "defectdojo.name" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: podSelector: matchLabels: app.kubernetes.io/instance: {{ .Release.Name }} - {{- if .Values.networkPolicy.ingress}} + {{- if .Values.networkPolicy.ingress }} ingress: - {{- toYaml .Values.networkPolicy.ingress | nindent 4 }} + {{- toYaml .Values.networkPolicy.ingress | nindent 4 }} {{- else }} ingress: - from: - podSelector: matchLabels: app.kubernetes.io/instance: {{ .Release.Name }} - {{- if .Values.networkPolicy.ingressExtend }} - {{- toYaml .Values.networkPolicy.ingressExtend | nindent 8 }} + {{- with .Values.networkPolicy.ingressExtend }} + {{- toYaml . | nindent 8 }} {{ end }} {{- end }} - {{- if .Values.networkPolicy.egress }} + {{- with .Values.networkPolicy.egress }} egress: - {{- toYaml .Values.networkPolicy.egress | nindent 4 }} + {{- toYaml . | nindent 4 }} {{ end }} --- apiVersion: networking.k8s.io/v1 @@ -40,6 +43,9 @@ metadata: app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} app.kubernetes.io/name: {{ include "defectdojo.name" . }} +{{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} +{{- end }} spec: podSelector: matchLabels: diff --git a/helm/defectdojo/templates/sa.yaml b/helm/defectdojo/templates/sa.yaml index 46f1eaa6d97..23cb70ecd6e 100644 --- a/helm/defectdojo/templates/sa.yaml +++ b/helm/defectdojo/templates/sa.yaml @@ -8,6 +8,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: helm.sh/resource-policy: keep helm.sh/hook: "pre-install" diff --git a/helm/defectdojo/templates/secret-postgresql-ha-pgpool.yaml b/helm/defectdojo/templates/secret-postgresql-ha-pgpool.yaml index 9a440efffd1..40906c1f180 100644 --- a/helm/defectdojo/templates/secret-postgresql-ha-pgpool.yaml +++ b/helm/defectdojo/templates/secret-postgresql-ha-pgpool.yaml @@ -8,6 +8,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: helm.sh/resource-policy: keep helm.sh/hook: "pre-install" diff --git a/helm/defectdojo/templates/secret-postgresql-ha.yaml b/helm/defectdojo/templates/secret-postgresql-ha.yaml index 8e884fa0484..e9236a63f00 100644 --- a/helm/defectdojo/templates/secret-postgresql-ha.yaml +++ b/helm/defectdojo/templates/secret-postgresql-ha.yaml @@ -8,6 +8,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: helm.sh/resource-policy: keep helm.sh/hook: "pre-install" diff --git a/helm/defectdojo/templates/secret-postgresql.yaml b/helm/defectdojo/templates/secret-postgresql.yaml index de6e65420b6..115c244baa5 100644 --- a/helm/defectdojo/templates/secret-postgresql.yaml +++ b/helm/defectdojo/templates/secret-postgresql.yaml @@ -8,6 +8,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: helm.sh/resource-policy: keep helm.sh/hook: "pre-install" diff --git a/helm/defectdojo/templates/secret-redis.yaml b/helm/defectdojo/templates/secret-redis.yaml index 629e6b4fa93..de4549c1f63 100644 --- a/helm/defectdojo/templates/secret-redis.yaml +++ b/helm/defectdojo/templates/secret-redis.yaml @@ -8,6 +8,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: helm.sh/resource-policy: keep helm.sh/hook: "pre-install" diff --git a/helm/defectdojo/templates/secret.yaml b/helm/defectdojo/templates/secret.yaml index 94ca3ef268b..500a097dd16 100644 --- a/helm/defectdojo/templates/secret.yaml +++ b/helm/defectdojo/templates/secret.yaml @@ -9,6 +9,9 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} helm.sh/chart: {{ include "defectdojo.chart" . }} + {{- with .Values.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} annotations: helm.sh/resource-policy: keep helm.sh/hook: "pre-install" diff --git a/helm/defectdojo/values.yaml b/helm/defectdojo/values.yaml index 555d66c4757..8cd5d0aca3b 100644 --- a/helm/defectdojo/values.yaml +++ b/helm/defectdojo/values.yaml @@ -16,6 +16,9 @@ createPostgresqlHaPgpoolSecret: false # - enabled, enables tracking configuration changes based on SHA256 # trackConfig: disabled +# extraLabels: {} +# Add extra labels for k8s + # Enables application network policy # For more info follow https://kubernetes.io/docs/concepts/services-networking/network-policies/ networkPolicy: @@ -234,13 +237,29 @@ django: tolerations: [] uwsgi: livenessProbe: - # Enable liveness checks on uwsgi container. Those values are use on nginx readiness checks as well. + # Enable liveness checks on uwsgi container. + enabled: true + failureThreshold: 6 + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + # Enable readiness checks on uwsgi container. enabled: true failureThreshold: 6 - initialDelaySeconds: 3 + initialDelaySeconds: 0 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 + startupProbe: + # Enable startup checks on uwsgi container. + enabled: true + failureThreshold: 30 + initialDelaySeconds: 0 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 1 resources: requests: cpu: 100m @@ -459,7 +478,7 @@ cloudsql: image: # set repo and image tag of gce-proxy repository: gcr.io/cloudsql-docker/gce-proxy - tag: 1.37.1 + tag: 1.37.2 pullPolicy: IfNotPresent # set CloudSQL instance: 'project:zone:instancename' instance: "" diff --git a/readme-docs/KUBERNETES.md b/readme-docs/KUBERNETES.md index c0edf4cb292..9c25b753a96 100644 --- a/readme-docs/KUBERNETES.md +++ b/readme-docs/KUBERNETES.md @@ -20,8 +20,7 @@ Starting with version 1.14.0, a helm chart will be pushed onto the `helm-charts` To use it, you can add our repo. ``` -$ helm repo add helm-charts 'https://raw.githubusercontent.com/DefectDojo/django-DefectDojo/helm-charts' -"helm-charts" has been added to your repositories +$ helm repo add defectdojo 'https://raw.githubusercontent.com/DefectDojo/django-DefectDojo/helm-charts' $ helm repo update ``` @@ -31,7 +30,7 @@ You should now be able to see the chart. ``` $ helm search repo defectdojo NAME CHART VERSION APP VERSION DESCRIPTION -helm-charts/defectdojo 1.5.1 1.14.0-dev A Helm chart for Kubernetes to install DefectDojo +defectdojo/defectdojo 1.6.153 2.39.0 A Helm chart for Kubernetes to install DefectDojo ``` ## Kubernetes Local Quickstart @@ -268,6 +267,15 @@ For more detail how how to create proper PVC see [example](https://github.com/De ### Installation +**Important:** If you choose to create the secret on your own, you will need to create a secret named `defectdojo` and containing the following fields: + +- DD_ADMIN_PASSWORD +- DD_SECRET_KEY +- DD_CREDENTIAL_AES_256_KEY +- METRICS_HTTP_AUTH_PASSWORD + +Theses fields are required to get the stack running. + ```zsh # Install Helm chart. Choose a host name that matches the certificate above helm install \ @@ -322,7 +330,7 @@ helm install \ # Run test. helm test defectdojo -# Navigate to max_free_space_needed",
+ "-[YapDatabaseCloudKitTransaction containsRecordID:databaseIdentifier:]",
+ "__ZNSt3__113unordered_mapImmNS_4hashImEENS_8equal_toImEENS_9allocatorINS_4pairIKmmEEEEED1B7v160006Ev",
+ "__ZNSt3__110__function12__value_funcIFvvEED2B7v160006Ev",
+ "__ZN5realm12ObjectSchemaC1ERKNS_5GroupENS_10StringDataEm",
+ "_$sSC16RLMSyncAuthErrorLeVABs0C0SCWL",
+ "_logOutAsync",
+ "T@\"NSData\",&,N,V_body",
+ "__ZN12_GLOBAL__N_126TransactLogValidationMixin24insert_group_level_tableEmmN5realm10StringDataE",
+ "__ZNSt3__1miB7v160006IPxS1_EEDTmicldtfp_4baseEcldtfp0_4baseEERKNS_11__wrap_iterIT_EERKNS3_IT0_EE",
+ "__ZTIN5realm4sync14TableInfoCache9TableInfo6VTableE",
+ " f'D",
+ "webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:",
+ "_objc_msgSend$whereKey:greaterThan:",
+ "_OBJC_IVAR_$_CBLJSONReader._stack",
+ "sortedLogFileInfos",
+ "__ZNK5realm15SyncFileManager23get_base_sync_directoryEv",
+ "__OBJC_LABEL_PROTOCOL_$_IFlurrySessionOriginSource",
+ "metadata_directoryE",
+ "__ZNKSt3__114default_deleteIN5realm11SharedGroupEEclB7v160006EPS2_",
+ "__ZN5realm23MaximumFileSizeExceededD0Ev",
+ "__ZNSt3__120__shared_ptr_emplaceIN5realm24CollectionChangeCallback4ImplIZNS1_11Permissions23perform_async_operationERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_10shared_ptrINS1_8SyncUserEEENS_8functionIFvPNS1_6ObjectESt13exception_ptrEEENS_3mapISA_NS1_4util3AnyENS_4lessISA_EENS8_INS_4pairISB_SO_EEEEEERKNSG_IFNS1_5Realm6ConfigESF_SA_EEEE3$_2EENS8_IS12_EEE11__get_allocB7v160006Ev",
+ "_$s10RealmSwift15unwrapOptionals2inSayypGAD_tF",
+ "ijh8i",
+ "@__ZNSt3__112__get_sp_mutEPKv",
+ "__ZN5realm24CollectionChangeCallback4ImplIZ23RLMAddNotificationBlockINS_7ResultsEEP20RLMNotificationTokenP11objc_objectRT_U13block_pointerFvS7_P19RLMCollectionChangeP7NSErrorEbEUlRKNS_19CollectionChangeSetESt13exception_ptrE_E6beforeESI_",
+ "__ZN5realm6createINS_8NotEqualENS_4nullEfEENS_5QueryET0_RKNS_8Subexpr2IT1_EE",
+ "originalRequest",
+ "__ZNSt3__110shared_ptrIN5realm24CollectionChangeCallback4ImplIZ23RLMAddNotificationBlockINS1_4ListEEP20RLMNotificationTokenP11objc_objectRT_U13block_pointerFvS9_P19RLMCollectionChangeP7NSErrorEbEUlRKNS1_19CollectionChangeSetESt13exception_ptrE_EEE18__enable_weak_thisB7v160006Ez",
+ "___36-[FlurryLocationInfoSource latitude]_block_invoke",
+ "__ZNSt3__19allocatorIN5realm10ColumnTypeEE8allocateB7v160006Em",
+ "__ZNK5realm5ValueINS_8RowIndexEE11export_nullERNS_9ValueBaseE",
+ "uniqueObjectsArrayFromArray:usingFilter:",
+ "Must be invoked within connectionQueue",
+ "___61+[RLMSyncServerEndpoint sendRequestToServer:JSON:completion:]_block_invoke",
+ "-[FlurryPLCrashMachExceptionServer copySendRightForServerAndReturningError:]",
+ "__ZNSt3__122__compressed_pair_elemINS_9allocatorINS_10shared_ptrIN5realm5_impl18CollectionNotifierEEEEELi1ELb1EEC2B7v160006IS7_vEEOT_",
+ "+[BFTask taskWithResult:]",
+ "_s_13",
+ "%.6g",
+ "readData:headers:toDatabase:status:",
+ "__swift_FORCE_LOAD_$_swiftos_$_DVIA_v2",
+ "THlX",
+ "-[YapDatabaseRelationshipTransaction handleTouchObjectForCollectionKey:withRowid:]",
+ "k}!t",
+ "GCC_except_table651",
+ "loadWatchEventThreshold",
+ "__ZNSt3__110__function12__value_funcIFNS_10shared_ptrIN5realm14AuditInterfaceEEEvEEC2B7v160006EOS7_",
+ "PreBuffer",
+ "UBSMp",
+ "__ZNSt3__110unique_ptrIA_PNS_16__hash_node_baseIPNS_11__hash_nodeINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_10shared_ptrIN5realm11SyncSessionEEEEEPvEEEENS_25__bucket_list_deallocatorINS7_ISJ_EEEEED1B7v160006Ev",
+ "__ZNSt3__19allocatorINS_20__shared_ptr_emplaceIN5realm24CollectionChangeCallback4ImplIZ23RLMAddNotificationBlockINS2_7ResultsEEP20RLMNotificationTokenP11objc_objectRT_U13block_pointerFvSA_P19RLMCollectionChangeP7NSErrorEbEUlRKNS2_19CollectionChangeSetESt13exception_ptrE_EENS0_ISO_EEEEEC2B7v160006ISO_EERKNS0_ISB_EE",
+ "__ZN5realm9TableViewaSEOS0_",
+ "Unsupported frame type",
+ "__ZNSt3__110unique_ptrIN5realm4util3Any5ValueINS1_4ListEEENS_14default_deleteIS6_EEE5resetB7v160006EPS6_",
+ "\\ARBRCSBp",
+ "__OBJC_METACLASS_RO_$_GAITrackedViewController",
+ "__ZNK5realm14TwoColumnsNodeINS_6ColumnIdEENS_5EqualEE8describeERNS_4util10serializer18SerialisationStateE",
+ "___copy_helper_block_.314",
+ "__ZNSt3__13endB7v160006INS_6vectorIN5realm14BindingContext13ObserverStateENS_9allocatorIS4_EEEEEEDTcldtfp_3endEERT_",
+ "__OBJC_CLASS_RO_$_FlurryURLSessionDelegate",
+ "@__ZN5realm19make_value_for_linkIxEENS_5ValueIT_EEbm",
+ "__ZNSt3__117__compressed_pairIPNS_11__hash_nodeINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEU8__strongP27RLMSyncSessionRefreshHandleEEPvEENS_22__hash_node_destructorINS6_ISE_EEEEE6secondB7v160006Ev",
+ "_pthread_attr_setdetachstate",
+ "_$s10Foundation4DataVSQAAMc",
+ "__ZN5realm15make_expressionINS_7CompareINS_5EqualEfNS_7SubexprES3_EEJNSt3__110unique_ptrIS3_NS5_14default_deleteIS3_EEEES9_EEENS6_INS_10ExpressionENS7_ISA_EEEEDpOT0_",
+ "_$s7DVIA_v230BinaryProtectionViewControllerC5coderACSgSo7NSCoderC_tcfcTo",
+ "__ZNSt3__122__compressed_pair_elemINS_22__allocator_destructorINS_9allocatorINS_10__function6__funcIZN5realm12partial_sync11unsubscribeEONS5_6ObjectEE3$_5NS2_IS9_EEFvvEEEEEEELi1ELb0EEC2B7v160006ISE_vEEOT_",
+ " \\,,",
+ "__ZTSN5realm8SizeNodeINS_14LinkListColumnENS_4LessEEE",
+ "SecIdentityRef MYGetOrCreateAnonymousIdentity(NSString *__strong, NSTimeInterval, CFStringRef, NSError *__autoreleasing *)",
+ "GCC_except_table1243",
+ "_$s7DVIA_v219PListViewControllerC8vulnCodeSivgTq",
+ "Assertion failed: m_advancer_sg->get_transact_stage() == SharedGroup::transact_Ready",
+ "__ZNSt3__117__compressed_pairIPN5realm5_impl21TransactionChangeInfoERNS_9allocatorIS3_EEEC1B7v160006IDnS7_EEOT_OT0_",
+ "_s_4_72",
+ "__ZNK5realm7CompareINS_8ContainsENS_10StringDataENS_7SubexprES3_E10find_firstEmm",
+ "Be;H,Oy]",
+ "GCC_except_table620",
+ "_OBJC_IVAR_$_YapWhitelistBlacklist.filterBlock",
+ "\"\"tc'",
+ "stickyFramesSet",
+ "__ZNSt3__13getB7v160006ILm2EJRKmS2_S2_EEERKNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERKS7_",
+ "-[PFURLSessionDataTaskDelegate setResponseString:]",
+ "__OBJC_$_CLASS_METHODS_YapDatabaseRelationship",
+ "__OBJC_$_INSTANCE_METHODS_RLMSyncPermission",
+ "_$ss16PartialRangeFromVySS5IndexVGMa",
+ "fetchObjectLocallyAsync:",
+ "@__ZN5realm4util8OptionalINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEaSEOS9_",
+ "_OBJC_CLASS_$_NSNumber",
+ "-[RLMRealm(SyncSubscription) subscriptions]",
+ "Ln`_",
+ "___40-[DDAbstractDatabaseLogger saveInterval]_block_invoke",
+ "_objc_msgSend$createTable",
+ "___destroy_helper_block_.23",
+ "_objc_msgSend$skipUploadDeletion",
+ "_OBJC_CLASS_$_YapDatabaseFullTextSearchHandler",
+ "_OBJC_METACLASS_$_FlurryReportedIdentifiersSource",
+ "__ZNSt3__122__allocator_destructorINS_9allocatorINS_10__function6__funcIPFP12NSExpressionS5_ENS1_IS7_EES6_EEEEEclB7v160006EPS9_",
+ "__ZNSt3__116__non_trivial_ifILb1ENS_9allocatorINS_11__tree_nodeINS_12__value_typeIN5realm4util4File8UniqueIDENS_8weak_ptrINS5_17InterprocessMutex8LockInfoEEEEEPvEEEEEC2B7v160006Ev",
+ "sync::create_table_with_primary_key(group, \"%1\", %2, \"%3\", %4);",
+ "__ZNSt3__16vectorIN5realm4util8iv_tableENS_9allocatorIS3_EEE8__appendEm",
+ "__ZN5realm6ColumnIxE13init_from_memERNS_9AllocatorENS_6MemRefE",
+ "_kGAICheckoutStep",
+ "eqq6R",
+ "__ZTVN5realm4util6detail26ExceptionWithBacktraceBaseE",
+ "+[FlurrySessionInfoDataProvider agentVersion]",
+ "_$s7DVIA_v222PhishingViewControllerCMn",
+ "__ZN5realm7NotNode27find_first_covered_by_knownEmm",
+ "4userAA0A0V0D0VSo11RLMSyncUserC_tFZ",
+ "__ZTSN5realm11IntegerNodeINS_6ColumnINS_4util8OptionalIxEEEENS_7GreaterEEE",
+ "_OBJC_CLASS_$_NSMutableIndexSet",
+ "__ZN5realm4util7network13DeadlineTimer8WaitOperIZNS_5_impl14ClientImplBase10Connection23initiate_reconnect_waitEvE3$_2ED0Ev",
+ "{1?_d",
+ "size_greater_equalEmx",
+ "'enableDataSharingWithApplicationGroupIdentifier:containingApplication:' must be called before 'setApplicationId:clientKey'",
+ "__ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIN5realm5RealmEEEEC2B7v160006Ev",
+ "@__ZNK5realm4List8dispatchIZNS0_3addIRNS_4util3AnyENS_10CppContextEEEvRT0_OT_NS_12CreatePolicyEEUlS9_E_EEDaSA_",
+ "__ZNSt3__110__function12__value_funcIFbmEEC1B7v160006IZN5realm5_impl18CollectionNotifier24get_modification_checkerERKNS6_21TransactionChangeInfoERKNS5_5TableEE3$_1NS_9allocatorISE_EEEEOT_RKT0_",
+ ")reateAccessors",
+ "__ZN5realm4List16set_if_differentIRU8__strongP11objc_object18RLMAccessorContextEEvRT0_mOT_NS_12CreatePolicyE",
+ "__ZNSt3__122__compressed_pair_elemINS_9allocatorIPKN5realm5TableEEELi1ELb1EEC2B7v160006ENS_18__default_init_tagE",
+ "ASASASASASBZBSAp",
+ "__ZN5realm7CompareINS_5EqualEfNS_7SubexprES2_EC2ERKS3_PNSt3__16vectorINS6_10unique_ptrINS_22QueryNodeHandoverPatchENS6_14default_deleteIS9_EEEENS6_9allocatorISC_EEEE",
+ " 7er",
+ "@_dispatch_get_current_queue",
+ "_OBJC_CLASS_$_GAIDefaultLogger",
+ "ssign_to",
+ "setHTTPShouldSetCookies:",
+ "___55-[FlurryReportingSource getContinueSessionMilliseconds]_block_invoke",
+ "__ZNSt3__16vectorIbNS_9allocatorIbEEE11__vallocateB7v160006Em",
+ "__ZNK12_GLOBAL__N_115ColumnReference4typeEv",
+ ":y)C",
+ "__ZN12_GLOBAL__N_121IncrementalChangeInfo19advance_incrementalEN5realm9VersionIDE",
+ "T@\" (data_pos)",
+ "__ZNSt3__18functionIFvNS_10shared_ptrIN5realm5RealmEEEEEaSERKS6_",
+ "__ZNKSt3__16vectorIbNS_9allocatorIbEEE4cendB7v160006Ev",
+ "__ZN5realm4util9websocket6SocketC1EOS2_",
+ "_objc_msgSend$selectedKeys",
+ "__ZNSt3__111__wrap_iterIPNS_8weak_ptrIN5realm5_impl16RealmCoordinatorEEEEC1B7v160006EPKvS6_",
+ "unction",
+ "__ZN5realm5_impl17ClientHistoryImpl27allocate_object_id_squeezedEm",
+ "statusForFlags:",
+ "__OBJC_$_INSTANCE_METHODS_YapDatabaseRelationshipEdge",
+ "__ZN5realm4util9ScopeExitIZNS_5Realm13update_schemaENS_6SchemaEyNSt3__18functionIFvNS4_10shared_ptrIS2_EES7_RS3_EEENS5_IFvS7_EEEbE3$_4EC1EOSD_",
+ "__OBJC_$_INSTANCE_METHODS_FlurryStreamEventDropRule",
+ "___65-[PFInstallationIdentifierStore _loadInstallationIdentifierAsync]_block_invoke_2",
+ "@__ZN5realmeqIxEENS_5QueryExRKNS_8Subexpr2IT_EE",
+ "__ZNSt3__19allocatorIZ42+[RLMSyncUser _setUpBindingContextFactory]E3$_0EC1B7v160006Ev",
+ "!1shouldCompactOnLaunchSbSi_SitcSgv",
+ "-[KeyBagStore initWithJSONDictionary:]",
+ "_urlSession",
+ "@__ZTVN10__cxxabiv117__class_type_infoE",
+ "__ZN12_GLOBAL__N_112QueryBuilder22add_numeric_constraintIdN5realm18SubColumnAggregateIdNS2_20aggregate_operations3SumIdEEEEEEv15RLMPropertyType23NSPredicateOperatorTypeOT_OT0_",
+ "+[FlurryURLSessionTask post:delegate:]",
+ "__ZN5realm9OverloadsIxNS_4nullEEltES1_",
+ "__ZN5realm8SizeNodeINS_12StringColumnENS_12GreaterEqualEE4initEv",
+ "5uZH",
+ "__ZNSt11logic_errorC2EPKc",
+ "__OBJC_CLASS_RO_$_FlurryActorOperationQueue",
+ "RealmUser",
+ "removeEdgeWithName:sourceKey:collection:destinationKey:collection:withProcessing:",
+ "_$s10RealmSwift16ObjectPrivilegesV8rawValues5UInt8Vvg",
+ "__ZNSt3__112__tuple_implINS_15__tuple_indicesIJLm0EEEEJRKNS_9allocatorIZN5realm5_impl20SyncProgressNotifier15NotifierPackage17create_invocationERKNS6_8ProgressERbE3$_5EEEEC1B7v160006IJLm0EEJSF_EJEJEJSF_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSJ_IJDpT2_EEEDpOT3_",
+ "__ZNSt3__110unique_ptrINS_10__function6__funcIZN5realm12partial_sync11unsubscribeERNS4_12SubscriptionEE3$_4NS_9allocatorIS7_EEFvvEEENS_22__allocator_destructorINS8_ISB_EEEEED1B7v160006Ev",
+ "___block_descriptor_tmp.445",
+ "__ZN5realm4util13normalize_dirERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE",
+ "GCC_except_table3832",
+ "hw.machine",
+ "+[FlurryParamBuilder mediaId]",
+ "__ZTSNSt3__110__function6__baseIFvN5realm4util11HTTPRequestENS_10error_codeEEEE",
+ "PLCrashAsyncThread_current.c",
+ "__ZN5realm4sync6Client3runEv",
+ "TQ,N,V_inactiveMemory",
+ "set%s:",
+ "SELECT docid FROM docs WHERE expiry_timestamp <= ?",
+ "__OBJC_$_INSTANCE_METHODS_FlurryStreamFileHandle",
+ "_$ss5Int64V10RealmSwift0B15CollectionValueACMc",
+ "databaseDirectoryPath",
+ "__ZNSt3__122__compressed_pair_elemINS_9allocatorIPNS_16__hash_node_baseIPNS_11__hash_nodeINS_17__hash_value_typeIU8__strongP8NSString12RLMClassInfoEEPvEEEEEELi1ELb1EEC2B7v160006ENS_18__default_init_tagE",
+ "Illegal: STATE message received without state download in progress.",
+ "__ZN5realm5_impl21ClientFileAccessCache4Slot12proper_closeEv",
+ "__ZNSt3__128__exception_guard_exceptionsINS_29_AllocatorDestroyRangeReverseINS_9allocatorIN5realm5_impl23CollectionChangeBuilderEEENS_16reverse_iteratorIPS5_EEEEED1B7v160006Ev",
+ "_OBJC_IVAR_$_YapDatabaseConnection.getMetadataForRowidStatement",
+ "NSt3__110__function6__funcIZ42+[RLMSyncUser _setUpBindingContextFactory]E3$_0NS_9allocatorIS2_EEFNS_10shared_ptrIN5realm15SyncUserContextEEEvEEE",
+ "@_SecTrustSetAnchorCertificates",
+ "__ZNSt3__14pairIKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEU8__strongP10NSMapTableEC2B7v160006IJRS7_EJEJLm0EEJEEENS_21piecewise_construct_tERNS_5tupleIJDpT_EEERNSF_IJDpT0_EEENS_15__tuple_indicesIJXspT1_EEEENSO_IJXspT2_EEEE",
+ "_objc_msgSend$_purchaseController",
+ "_$s7DVIA_v213CoreDataStackC19persistentContainerSo012NSPersistentG0CvpMV",
+ "4(<<",
+ "__ZNKSt3__111__alternateIcE6__execERNS_7__stateIcEE",
+ "GCC_except_table1500",
+ "4.xF",
+ "-[CBLDatabase allReplications]",
+ "0adj_row_acc_move_rowEmm",
+ "__OBJC_$_INSTANCE_METHODS_YDBCKDirtyRecordTableInfo",
+ "__ZNSt3__111__wrap_iterIPN5realm8PropertyEEppB7v160006Ev",
+ "queryState",
+ "__ZNK5realm5ValueINS_10StringDataEE13export_doubleERNS_9ValueBaseE",
+ "__ZN5realm5_impl17DeepChangeCheckerC2ERKNS0_21TransactionChangeInfoERKNS_5TableERKNSt3__16vectorINS1_12RelatedTableENS8_9allocatorISA_EEEE",
+ "setParentClassName:",
+ "__ZNSt3__16vectorIZ17RLMTrackDeletionsP8RLMRealmU13block_pointerFvvEE6changeNS_9allocatorIS5_EEEC1B7v160006Ev",
+ "__ZN5realm12ArrayIntNullD1Ev",
+ "__ZN5realm5_impl15OptionalStorageINS_4sync7Session6Config11ClientResetELb0EED2Ev",
+ "__ZNSt3__19allocatorIN5realm12ObjectSchemaEE9constructB7v160006IS2_JS2_EEEvPT_DpOT0_",
+ "Collection",
+ "GCC_except_table88",
+ "__ZZ25-[RLMResults firstObject]ENK3$_7clEv",
+ "_$sSo8RLMArrayCMD",
+ "_symbolic So21NSPersistentContainerCSg",
+ "_$s7DVIA_v213CoreDataStackC29applicationDocumentsDirectory10Foundation3URLVvMTq",
+ "parseRevisionHistoryDict:",
+ "__ZN12_GLOBAL__N_117MakeConditionNodeIN5realm13TimestampNodeINS1_4LessEEEE4makeIxEENSt3__110unique_ptrINS1_10ParentNodeENS7_14default_deleteIS9_EEEEmT_",
+ "do_POST_revs_diff:",
+ "_symbolic $ss9OptionSetP",
+ "@__ZNK5realm4List4findIdEEmRKT_",
+ "_$s7DVIA_v240ApplicationPatchingDetailsViewControllerC21textFieldShouldReturnySbSo06UITextI0CF",
+ "___54-[PFPurchaseController buyProductAsyncWithIdentifier:]_block_invoke",
+ "_$s7DVIA_v219RealmViewControllerC22realmPasswordTextFieldSo06UITextI0CSgvpfi",
+ "__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1B7v160006ERKS4_",
+ "__ZNKSt3__117__compressed_pairIZ52-[RLMRealm(Sync) subscribeToObjects:where:callback:]E3$_0NS_9allocatorIS1_EEE5firstB7v160006Ev",
+ "_OBJC_IVAR_$_CBLResponse._internalStatus",
+ "_objc_msgSend$attributesOfItemAtPath:error:",
+ "l*;P",
+ "__ZNSt3__112__tuple_implINS_15__tuple_indicesIJLm0EEEEJONS_9allocatorIZ52-[RLMRealm(Sync) subscribeToObjects:where:callback:]E3$_0EEEEC1B7v160006IJLm0EEJS6_EJEJEJS5_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSA_IJDpT2_EEEDpOT3_",
+ "_$sSC12RLMSyncErrorLeV10Foundation13CustomNSErrorSCs0B0PWb",
+ "__ZNK5realm5Array14find_optimizedINS_4LessELNS_6ActionE3ELm32EPFbxEEEbxmmmPNS_10QueryStateIxEET2_bb",
+ "startOnQueue:",
+ "_useCurrentUser",
+ "__ZN5realm8Subexpr2IdED0Ev",
+ "_OBJC_METACLASS_$_PFPointerOrLocalIdObjectEncoder",
+ "___83-[PSWebSocketServer disconnectConnectionGracefully:statusCode:description:headers:]_block_invoke",
+ "_OBJC_IVAR_$_YapDatabaseConnection.extensionsOrder",
+ "__ZNSt3__16vectorIN5realm5_impl17WeakRealmNotifierENS_9allocatorIS3_EEE21_ConstructTransactionD1B7v160006Ev",
+ "oauth_timestamp",
+ "stringWithFormat:",
+ "__ZN5realm15IntegerNodeBaseINS_6ColumnINS_4util8OptionalIxEEEEE28find_callback_specializationINS_8NotEqualELNS_6ActionE2ELNS_8DataTypeE0ELb1EEEbmm",
+ "__ZN12_GLOBAL__N_122getTypeContextIdentityEPKN5swift27TargetTypeContextDescriptorINS0_9InProcessEEE",
+ "PFSubclassingSkipAutomaticRegistration",
+ "__ZNKSt3__116__back_ref_icaseIcNS_12regex_traitsIcEEE6__execERNS_7__stateIcEE",
+ "enableCrashReporterAndReturnError:",
+ "___36+[Flurry applicationDidBecomeActive]_block_invoke",
+ "_$s7DVIA_v232JailbreakDetectionViewControllerC11viewDidLoadyyFTo",
+ "T.o`",
+ "\" ",
+ "attributeType",
+ "__ZN5realm16SyncUserMetadata12set_is_adminEb",
+ "-[GAIReachabilityChecker stop]",
+ "test_logStartOrientation:",
+ "12RLMClassInfoEENS_22__unordered_map_hasherIS4_S6_NS_4hashIS4_EENS_8equal_toIS4_EELb1EEENS_21__unordered_map_equalIS4_S6_SB_S9_Lb1EEENS_9allocatorIS6_EEE",
+ "__ZNSt3__142__uninitialized_allocator_move_if_noexceptB7v160006INS_9allocatorIN5realm5_impl17DeepChangeChecker12OutgoingLinkEEENS_16reverse_iteratorIPS5_EES9_S5_vEET1_RT_T0_SD_SA_",
+ "__ZN5realm5_impl19help_compare_valuesINS_4util8OptionalIbEEEEbRKT_S7_",
+ "_$s10RealmSwift21SyncSubscriptionStateOyACSo07RLMSyncD0CcfC",
+ "_objc_msgSend$removeObject:forKey:",
+ "set_",
+ "_$s10RealmSwift6ObjectCyypSgSScipMV",
+ "_objc_msgSend$initWithServerData:operationSetQueue:",
+ "__ZN5realm10BasicArrayIfE12create_arrayEmRNS_9AllocatorE",
+ "\t=u/v",
+ "__ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE8capacityB7v160006Ev",
+ "__ZNSt3__110unique_ptrINS_10__function6__baseIFvNS_10error_codeEEEENS_22__allocator_destructorINS_9allocatorINS1_6__funcIZNK5realm5_impl19sync_session_states5Dying11enter_stateERNS_11unique_lockINS_5mutexEEERNS9_11SyncSessionEEUlS3_E_NS7_ISJ_EES4_EEEEEEE7releaseB7v160006Ev",
+ "GCC_except_table1333",
+ "<4,L04@ ",
+ "__ZN5realm9aggregateIffLNS_6ActionE2ENS_7NotNullENS_6ColumnIfEEEET0_RKT3_T_mmmPm",
+ "__ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_10shared_ptrIN5realm11SyncSessionEEEEENS_22__unordered_map_hasherIS7_SC_NS_4hashIS7_EENS_8equal_toIS7_EELb1EEENS_21__unordered_map_equalIS7_SC_SH_SF_Lb1EEENS5_ISC_EEE21__construct_node_hashIRKNS_21piecewise_construct_tEJNS_5tupleIJRKS7_EEENSR_IJEEEEEENS_10unique_ptrINS_11__hash_nodeISC_PvEENS_22__hash_node_destructorINS5_ISZ_EEEEEEmOT_DpOT0_",
+ "__ZN5realm13BasicTableRefIKNS_5TableEED2Ev",
+ "__ZZN12_GLOBAL__N_112QueryBuilder21add_string_constraintIN5realm10StringDataEEEv23NSPredicateOperatorTypemONS2_7ColumnsIS3_EET_ENKUlS3_E_clES3_",
+ "Assertion failed: m_socket",
+ "s\\8 ",
+ "0(004",
+ "__ZNK5realm5Array14find_optimizedINS_4NoneELNS_6ActionE4ELm8EPFbxEEEbxmmmPNS_10QueryStateIxEET2_bb",
+ "-[FlurryWatchConnectivity init]",
+ "__ZNSt3__110shared_ptrIN5realm5_impl14ObjectNotifierEE4swapB7v160006ERS4_",
+ "-[YapDatabaseViewTransaction(Mappings) metadataAtIndexPath:withMappings:]",
+ "FMDatabaseAdditions.m",
+ "__ZNKSt3__110unique_ptrINS_10__function6__baseIFbmEEENS_22__allocator_destructorINS_9allocatorINS1_6__funcIN5realm5_impl17DeepChangeCheckerENS6_ISA_EES3_EEEEEEE3getB7v160006Ev",
+ "__ZNSt3__13endB7v160006INS_5arrayIjLm624EEEEEDTcldtfp_3endEERT_",
+ "T@\"NSString\",R,C,N",
+ "__ZThn8_NK5realm18MultipleSyncAgents7messageEv",
+ "_$s10RealmSwift03AnyA10CollectionVyxGAA0aD0AAWI",
+ "-[PFObject init]",
+ "beginUse",
+ "$84$T",
+ "_$s7DVIA_v239ClientSideInjectionDetailViewControllerC13nameTextFieldSo06UITextK0CSgvs",
+ "_OBJC_IVAR_$_YapDatabaseRelationshipConnection.deletedInfo",
+ "_$sSo26NSRegularExpressionOptionsVs10SetAlgebraSCsACP5unionyxxnFTW",
+ "__ZNSt3__122__compressed_pair_elemINS_9allocatorIN5realm10ColumnTypeEEELi1ELb1EEC2B7v160006ENS_18__default_init_tagE",
+ "ZEdb",
+ "_objc_msgSend$lt_removeLogger:",
+ "_linkOriginPropertyName",
+ "v24@0:8@\"BLIPConnection\"16",
+ "__ZNSt3__16__copyB7v160006INS_17_ClassicAlgPolicyEPxS2_S2_EENS_4pairIT0_T2_EES4_T1_S5_",
+ "___block_descriptor_tmp.187",
+ "setFont:",
+ "filePathDirectory",
+ "__ZN5realm9OverloadsIxxE7create2INS_8NotEqualEEENS_5QueryERKNS_8Subexpr2IxEE",
+ "NSDictionary+YapDatabase.m",
+ "jh8K",
+ "__ZN5realm10ParentNode28column_action_specializationILNS_6ActionE4ENS_6ColumnIxEEEEbPNS_14QueryStateBaseEPNS_20SequentialGetterBaseEm",
+ "v32@?0@8@16^B24",
+ "_$s7DVIA_v29RealmUserCMF",
+ "_$s10RealmSwift4ListCys5SliceVyACyxGGSnySiGciM",
+ "fHbX",
+ "flurryApplicationDidFinishLaunching",
+ "GCC_except_table207",
+ "__ZNSt3__16__moveB7v160006INS_17_ClassicAlgPolicyENS_16reverse_iteratorIPN12_GLOBAL__N_134LongestCommonSubsequenceCalculator3RowEEES7_S7_EENS_4pairIT0_T2_EES9_T1_SA_",
+ "__ZNKSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEU8__strongP27RLMSyncSessionRefreshHandleEENS_22__unordered_map_hasherIS7_SB_NS_4hashIS7_EENS_8equal_toIS7_EELb1EEENS_21__unordered_map_equalIS7_SB_SG_SE_Lb1EEENS5_ISB_EEE12bucket_countB7v160006Ev",
+ "__ZNSt3__110unique_ptrIN5realm19ThreadSafeReferenceINS1_6ObjectEEENS_14default_deleteIS4_EEED1B7v160006Ev",
+ "dataWithFreeMemory:activeMemory:inactiveMemory:wiredMemory:cpuUsage:totalDiskSize:availableDiskSize:lastBootTime:batteryLevel:batteryCharging:carrierName:carrierMNC:carrierMCC:isStart:",
+ "ib8_",
+ "-[FlurryStreamFrameDeserializer frameTypeFromData:error:]",
+ "__ZNSt3__19iter_swapB7v160006IPN5realm19CollectionChangeSet4MoveES4_EEvT_T0_",
+ "__ZTIN5realm7CompareIN12_GLOBAL__N_117ContainsSubstringILm136EEENS_10StringDataENS_7SubexprES5_EE",
+ "Unexpected value for %s: %@ (expected %@)",
+ "__ZNKSt3__110shared_ptrIN5realm8LinkViewEE3getB7v160006Ev",
+ "@_swift_getTupleTypeMetadata",
+ "retryAfterDelay:",
+ "__ZN12_GLOBAL__N_117MakeConditionNodeIN5realm11IntegerNodeINS1_6ColumnIxEENS1_4LikeEEEE4makeINS1_10StringDataEEENSt3__110unique_ptrINS1_10ParentNodeENSA_14default_deleteISC_EEEEmT_",
+ "{shared_ptr >32@0:8@\"NSString\"16@\"NSString\"24",
+ "__ZN5realm12ArrayInteger3setEmx",
+ "3stringLiteralACSS_tcfC",
+ "setupKVO",
+ "blipConnection:receivedRequest:",
+ "__ZN5realm15make_expressionINS_7CompareINS_5EqualENS_8RowIndexENS_7SubexprES4_EEJNSt3__110unique_ptrIS4_NS6_14default_deleteIS4_EEEESA_EEENS7_INS_10ExpressionENS8_ISB_EEEEDpOT0_",
+ "Warning: A long-running operation is being executed on the main thread. ",
+ "__ZNSt3__118__unwrap_iter_implINS_16reverse_iteratorIPcEELb0EE8__unwrapB7v160006ES3_",
+ "Assertion failed: !m_unbind_message_sent",
+ "RLMUtil.mm",
+ "GCC_except_table1262",
+ "_OBJC_METACLASS_$_PFAnalyticsController",
+ "_OBJC_CLASS_$_GAIEcommerceFields",
+ "_$sSo10CGImageRefaMf",
+ "__ZN12_GLOBAL__N_111SessionImplD1Ev",
+ "`TlTT",
+ "initWithSocketQueue:",
+ "8get_sync_changeset_of_current_transactEv",
+ "-[YapDatabaseReadTransaction enumerateRowsInCollection:usingBlock:withFilter:]",
+ "___59-[CBLWebSocketChangeTracker webSocket:validateServerTrust:]_block_invoke",
+ "_$s10RealmSwift14PermissionUserC16_realmObjectNameSSyFZTo",
+ "_RN_CCKeyDerivationPBKDF",
+ "__ZNK12_GLOBAL__N_115ColumnReference19do_resolve_backlinkIfJEEEN5realm7ColumnsIT_EENSt3__117integral_constantIbLb0EEEDpOT0_",
+ "___46-[FlurryConsentSource onqueue_updateObserver:]_block_invoke",
+ "__ZNSt3__110unique_ptrIN5realm29ConstantRowValueHandoverPatchENS_14default_deleteIS2_EEEC2B7v160006ILb1EvEEPS2_",
+ "__ZNSt3__110unique_ptrIN5realm4util12StderrLoggerENS_14default_deleteIS3_EEEC2B7v160006ILb1EvEEPS3_",
+ "No ACL property on class",
+ "N5realm12BasicRowExprINS0_5TableEEE",
+ "-[FlurryPLCrashReportSystemInfo operatingSystemVersion]",
+ "__ZN5realm4util6Logger6do_logIJRmS3_RKfRbEEEvNS1_5LevelEPKcDpOT_",
+ "__ZNSt3__17advanceB7v160006INS_11__wrap_iterIPN5realm12ObjectSchemaEEEllvEEvRT_T0_",
+ "__ZNK5realm5ValueIfE15export_RowIndexERNS_9ValueBaseE",
+ "__ZNKSt3__16vectorIN5realm13BasicTableRefIKNS1_5TableEEENS_9allocatorIS5_EEE11__recommendB7v160006Em",
+ "\t5update_linkviewEv",
+ "_$s7DVIA_v213ImageResourceV4hash4intoys6HasherVz_tF",
+ "-[RLMPermission canDelete]",
+ "SBSATKp",
+ "@__ZN5realm11StringIndex10update_refIxEEvT_mm",
+ "-[FlurryConfigInfoData initWithVariants:]",
+ "-[CBL_GCDAsyncSocket disconnectAfterReading]",
+ "__ZN5realm4util19fetch_value_in_fileERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPKc",
+ "__ZN5realm8IndexSet9insert_atERKS0_",
+ "fl.store.id",
+ "__ZTSZN5realm5_impl12client_reset14transfer_groupERKNS_5GroupERKNS_4sync14TableInfoCacheERS2_RS6_RNS_4util6LoggerEE3$_0",
+ "__ZNSt3__122__compressed_pair_elemIPmLi0ELb0EEC2B7v160006IDnvEEOT_",
+ "@_OBJC_CLASS_$_NSRecursiveLock",
+ "10ConnectionE",
+ "___27-[CBLCookieStorage cookies]_block_invoke",
+ "__ZN5realm4util9terminateIJiiEEEvPKcS3_lDpT_",
+ "GCC_except_table4238",
+ "_$s7DVIA_v221CookiesViewControllerC24cookiesPasswordTextFieldSo06UITextI0CSgvgTo",
+ "_$ss5Int16V10RealmSwiftE8bridging9objCValueAByp_tFZ",
+ "__ZNSt3__18_IterOpsINS_17_ClassicAlgPolicyEE4nextB7v160006IPN5realm12SchemaChangeEEET_S7_S7_",
+ "Tq,N,V_previousState",
+ "_objc_msgSend$setStringValue:forKey:extension:",
+ "shouldDropMessage:",
+ "setUserId:",
+ "_kFConfigKillSwitchDateStartKey",
+ "__ZNSt3__16vectorIPN5realm5TableENS_9allocatorIS3_EEE16__destroy_vectorC1ERS6_",
+ "__ZNKSt3__16vectorINS_4pairImmEENS_9allocatorIS2_EEE4dataB7v160006Ev",
+ "__ZNSt3__13getB7v160006ILm0EJRKNS_9allocatorIZ94-[RLMSyncConfiguration initWithUser:realmURL:customFileURL:isPartial:stopPolicy:errorHandler:]E3$_1EEEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSA_",
+ "DELETE FROM \"database2\" WHERE \"rowid\" = ?;",
+ "__ZNSt3__112__tuple_implINS_15__tuple_indicesIJLm0EEEEJRKZN5realm11SyncSession19create_sync_sessionEvE3$_3EEC1B7v160006IJLm0EEJS7_EJEJEJS7_EEENS1_IJXspT_EEEENS_13__tuple_typesIJDpT0_EEENS1_IJXspT1_EEEENSB_IJDpT2_EEEDpOT3_",
+ "Tq,R,N,Vdirty_ownerCount",
+ ":showDonateyyF",
+ "__ZNSt3__110__function12__value_funcIFbRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEtPKcmiiEE9__as_baseEPv",
+ "4pairIKS7_S7_EEEEENSK_INS_15__hash_iteratorIPNS_11__hash_nodeIS8_PvEEEEbEERKT_DpOT0_",
+ "__ZNK5realm9SlabAlloc15get_replicationEv",
+ "openAsync",
+ "Assertion failed: backlink_ndx != not_found",
+ "-[CBLPasswordAuthorizer initWithCredential:]",
+ "__ZNSt3__116__non_trivial_ifILb1ENS_9allocatorINS_10__function6__funcIZN5realm5Realm25add_schema_change_handlerEvE3$_5NS1_IS6_EEFvvEEEEEEC2B7v160006Ev",
+ "__ZN5realm11SharedGroup6commitEv",
+ "__ZN12_GLOBAL__N_112OptionalBaseD2Ev",
+ "objectSchemaForObjectStoreSchema:",
+ "-[DDMultiFormatter .cxx_destruct]",
+ "GCC_except_table5006",
+ "__ZZN5realm4List16set_if_differentIRNS_4util3AnyENS_10CppContextEEEvRT0_mOT_NS_12CreatePolicyEENKUlS8_E_clIPNS_9TimestampEEEDaS8_",
+ "_TtC7DVIA_v238AntiAntiHookingDebuggingViewController",
+ "__ZNSt3__17__sort4B7v160006INS_17_ClassicAlgPolicyERNS_6__lessIN5realm10StringDataES4_EEPS4_EEjT1_S8_S8_S8_T0_",
+ "__ZNSt3__122__compressed_pair_elemIPN5realm5_impl17DeepChangeChecker12RelatedTableELi0ELb0EEC2B7v160006IDnvEEOT_",
+ "___37-[CBL_HTTPServer setConnectionClass:]_block_invoke",
+ "__ZN5realm4util6formatIJRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEmEEES8_PKcDpOT_",
+ "__ZNSt3__14pairIKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_10shared_ptrIN5realm8SyncUserEEEEC1B7v160006IRS7_RSB_LPv0EEEOT_OT0_",
+ "__ZN5realm13ArrayBigBlobsD1Ev",
+ "___block_descriptor_48_e8_32s_e15_v32",
+ "FlurryPLCrashReportSystemInfo",
+ "StringDataEEEvmT_",
+ "__ZNKSt3__116reverse_iteratorIPNS_8functionIFvvEEEEptB7v160006Ev",
+ "__ZN12_GLOBAL__N_118InRealmHistoryImplD0Ev",
+ "__ZNSt3__18distanceB7v160006IPPKN5realm10ColumnBaseEEENS_15iterator_traitsIT_E15difference_typeES7_S7_",
+ "___copy_helper_block_.149",
+ "_OBJC_CLASS_$_YapCacheItem",
+ "Assertion failed: size % 8 == 0",
+ "__ZNSt3__122__compressed_pair_elemIPN5realm8BasicRowINS1_5TableEEELi0ELb0EEC2B7v160006IS5_vEEOT_",
+ "__ZNSt3__116__hash_node_baseIPNS_11__hash_nodeINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES8_EEPvEEEC1B7v160006Ev",
+ "__ZNSt3__122__compressed_pair_elemINS_9allocatorIZN5realm5Realm25add_schema_change_handlerEvE3$_5EELi1ELb1EEC2B7v160006IJOS5_EJLm0EEEENS_21piecewise_construct_tENS_5tupleIJDpT_EEENS_15__tuple_indicesIJXspT0_EEEE",
+ "_OBJC_IVAR_$_RLMRealm._notificationHandlers",
+ "_httpPath",
+ "/Users/PrateekGianchandani/Desktop/DVIA-v2/DVIA-v2/Pods/Realm/Realm/RLMQueryUtil.mm",
+ "__ZNSt3__19allocatorIN5realm5_impl17DeepChangeChecker12RelatedTableEE7destroyB7v160006EPS4_",
+ "-[FConfigDiskClient readingBlock]",
+ "__ZTVN5realm8SizeNodeINS_14LinkListColumnENS_8NotEqualEEE",
+ "__ZNK5realm14LinkListColumn3getEm",
+ "__ZNK5realm4util7network10SocketBase10get_optionENS2_8opt_enumEPvRmRNSt3__110error_codeE",
+ "__ZNKSt16initializer_listIPKcE3endB7v160006Ev",
+ "cocoa.lumberjack.ttyLogger",
+ "-[YapDatabaseReadTransaction enumerateKeysAndMetadataInAllCollectionsUsingBlock:withFilter:]",
+ "PSWebSocketErrorDomain",
+ "-[CBLSymmetricKey .cxx_destruct]",
+ "GCC_except_table2443",
+ "Header line too long",
+ "openResultSetQueries",
+ "k4v7+",
+ "__ZNSt3__16vectorIZN12_GLOBAL__N_134LongestCommonSubsequenceCalculator18find_longest_matchEmmmmE6LengthNS_9allocatorIS3_EEED2B7v160006Ev",
+ "__ZZNK5realm4List4findIRU8__strongP11objc_object18RLMAccessorContextEEmRT0_OT_ENKUlS9_E_clIPNS_10BinaryDataEEEDaS9_",
+ "_$sSo11RLMListBaseCML",
+ "__ZNSt3__114__split_bufferIN5realm8IndexSetERNS_9allocatorIS2_EEED1Ev",
+ "__ZN5realm5_impl15OptionalStorageINS_6ObjectELb0EED2Ev",
+ "_OBJC_METACLASS_$_YapTouch",
+ "@__ZN5realm5_impl18TransactLogEncoder19append_simple_instrIJNS0_11InstructionEmNS_8DataTypeENS_10StringDataEEEEvDpT_",
+ "__ZNSt3__16vectorIcNS_9allocatorIcEEE4dataB7v160006Ev",
+ "/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration",
+ "@9hb",
+ "__ZZNK5realm4List3getI18RLMAccessorContextEEDaRT_mENKUlS4_E_clIPNS_10StringDataEEES3_S4_",
+ "__ZTSN5realm11IntegerNodeINS_6ColumnIxEENS_4LessEEE",
+ "__ZNSt3__16vectorINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEbEENS5_IS8_EEE24__emplace_back_slow_pathIJS8_EEEvDpOT_",
+ "+[FlurryWatchStreamEventDropRule eventDropRuleWithMaxEventThreshold:withMaxDuration:]",
+ "_OBJC_CLASS_$_FlurryBreadcrumbs",
+ "___72-[FlurryCrashContext onqueue_captureNetworkStatusAndSubscribeForUpdates]_block_invoke_2",
+ "@48@0:8q16^B24^B32^i40",
+ "initClientSocketWithRequest:",
+ "\txEET_m",
+ "__ZN5realm15IntegerNodeBaseINS_6ColumnINS_4util8OptionalIxEEEEE28find_callback_specializationINS_4LessELNS_6ActionE2ELNS_8DataTypeE9ELb0EEEbmm",
+ "__ZNKSt3__122__compressed_pair_elemINS_9allocatorINS_8functionIFvNS_10error_codeEEEEEELi1ELb1EE5__getB7v160006Ev",
+ "-[FlurryStreamNetworkStatus connectionType]",
+ "__ZNSt3__112__tuple_leafILm0ERKN5realm5_impl17DeepChangeCheckerELb0EEC2B7v160006IS5_vEEOT_",
+ "__ZNSt3__117__compressed_pairIZN5realm12partial_sync11unsubscribeEONS1_6ObjectEE3$_5NS_9allocatorIS5_EEEC2B7v160006IJOS5_EJOS7_EEENS_21piecewise_construct_tENS_5tupleIJDpT_EEENSD_IJDpT0_EEE",
+ ",@,4",
+ "__ZNSt3__122__hash_node_destructorINS_9allocatorINS_11__hash_nodeINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS1_IcEEEENS_10shared_ptrIN5realm8SyncUserEEEEEPvEEEEEC2B7v160006ERSG_b",
+ "stop:",
+ "iEEvT_",
+ "Bad status in TRANSACT message",
+ "@_$ss9OptionSetPss17FixedWidthInteger8RawValueRpzrlE23formSymmetricDifferenceyyxF",
+ "__ZNSt3__13getB7v160006ILm0EJONS_9allocatorIZNK5realm5_impl19sync_session_states5Dying11enter_stateERNS_11unique_lockINS_5mutexEEERNS2_11SyncSessionEEUlNS_10error_codeEE_EEEEERNS_13tuple_elementIXT_ENS_5tupleIJDpT0_EEEE4typeERSK_",
+ "validate_bufferEPKcmRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE",
+ "__ZNSt3__113unordered_mapIU8__strongP8NSStringN5realm8IndexSetENS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIU8__strongKS2_S5_EEEEEC1B7v160006Ev",
+ "_sRegisteredTokens",
+ "_bundle",
+ "H,<,",
+ "sessionToken",
+ "__ZN5realm8BasicRowIKNS_5TableEED2Ev",
+ "@__ZNSt3__114__split_bufferIxRNS_9allocatorIxEEE18__construct_at_endINS_13move_iteratorIPxEEEENS_9enable_ifIXsr27__is_cpp17_forward_iteratorIT_EE5valueEvE4typeESA_SA_",
+ "1get_client_file_identEv",
+ "PL<, ,",
+ "-[CBLCookieStorage isPathMatchedBetweenCookie:andUrl:]",
+ "_inActiveMemoryUsage",
+ "__ZN5realm4util8bind_ptrIKNS_5TableEEC2EPS3_",
+ "GCC_except_table3584",
+ "__ZNK5realm4util8bind_ptrIKNS_5TableEEdeEv",
+ "__ZZ53-[RLMSyncSubscription initWithOptions:results:realm:]EN3$_1D2Ev",
+ "_s_11_12",
+ "__ZN12_GLOBAL__N_118EraseColumnUpdaterD0Ev",
+ "__ZTVNSt3__110__function6__funcINS_6__bindIZN5realm4util15DefaultGovernor21current_target_getterEmEUlxE_JRxEEENS_9allocatorIS8_EEFxvEEE",
+ "INSERT OR REPLACE INTO \"%@\" (\"rowid\", \"snippet\") VALUES (?, ?);",
+ "__ZNKSt3__116reverse_iteratorIPP12RLMClassInfoE4baseB7v160006Ev",
+ "-[CBLHTTPConnection remoteURL]",
+ "__ZN5realm4util22ExceptionWithBacktraceISt8bad_castEC2IJEEEDpOT_",
+ "-[PSWebSocketDriver pmdExtensionsHeaderComponents]",
+ "___46-[FlurryLocaleInfoDataProvider localeInfoData]_block_invoke",
+ "__ZNKSt3__117__compressed_pairIPNS_11__hash_nodeINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_10shared_ptrIN5realm11SyncSessionEEEEEPvEENS_22__hash_node_destructorINS6_ISF_EEEEE5firstB7v160006Ev",
+ "__ZNK5realm18TrivialReplication17get_database_pathEv",
+ "_$sSo8CIFilterCMa",
+ "_$sSo22NSStringCompareOptionsVs10SetAlgebraSCMA",
+ "__OBJC_LABEL_PROTOCOL_$_IFlurryStreamCoreComponent",
+ "_$s7DVIA_v213MenuCellModelVMf",
+ "__ZN5realm4util8OptionalINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2ENS0_4NoneE",
+ "@_$sSl30_customIndexOfEquatableElementy0B0QzSgSg0E0QzFTq",
+ "N2,o",
+ " 5@_$s10Foundation3URLV36_unconditionallyBridgeFromObjectiveCyACSo5NSURLCSgFZ",
+ "__ZNSt3__130__uninitialized_allocator_copyB7v160006INS_9allocatorImEEmmLPv0EEEPT0_RT_PKS4_S9_S5_",
+ "_OBJC_CLASS_$_FlurryWatchStreamManager",
+ "unallowed token at this point in JSON text",
+ "tt$$$",
+ "ObservationInfo",
+ "pendingDocumentIDs",
+ "__ZNSt3__117__compressed_pairIPN5realm12ObjectSchemaENS_9allocatorIS2_EEEC1B7v160006IDnS5_EEOT_OT0_",
+ "__ZNK5realm14TwoColumnsNodeINS_6ColumnIdEENS_5EqualEE18describe_conditionEv",
+ "TM!@",
+ "@32@0:8d16@24",
+ "__ZN5realm5_impl15OptionalStorageINS_16SyncUserMetadataELb0EED2Ev",
+ "__OBJC_CLASS_PROTOCOLS_$_FlurryConsentSource",
+ "__ZNKSt3__122__compressed_pair_elemINS_9allocatorIPNS_16__hash_node_baseIPNS_11__hash_nodeINS_17__hash_value_typeImmEEPvEEEEEELi1ELb1EE5__getB7v160006Ev",
+ "v60@0:8@16@24@32i40@44@52",
+ "h\"E9",
+ "CBL_SQLiteStorage: encryption not available (app not built with SQLCipher)",
+ "__Z31RLMDefaultValuesForObjectSchemaP15RLMObjectSchema",
+ "TRACE: %s",
+ "_$s10RealmSwift22LinkingObjectsAccessorCMi",
+ "__ZNSt3__122__compressed_pair_elemIZ94-[RLMSyncConfiguration initWithUser:realmURL:customFileURL:isPartial:stopPolicy:errorHandler:]E3$_0Li0ELb1EEC2B7v160006IJOS1_EJLm0EEEENS_21piecewise_construct_tENS_5tupleIJDpT_EEENS_15__tuple_indicesIJXspT0_EEEE",
+ "a$5[v",
+ "_OBJC_CLASS_$_CBLTimeSeriesEnumerator",
+ "@_pthread_rwlock_unlock",
+ "ident_messageENS_4sync15SaltedFileIdentE",
+ "g]Et",
+ "__ZN5realm4util19terminate_with_infoIJRjEEEvPKciS4_S4_DpOT_",
+ "__ZN5realm10BinaryNodeINS_4LikeEED1Ev",
+ "setValuesForKeysWithDictionary:",
+ "Bad changeset (DOWNLOAD)",
+ "VBSCSCSCSCSCSCSCSCSCSCSCSCSCSCSAp",
+ "__OBJC_$_CLASS_METHODS_FConfigCryptoUtils",
+ "-[FlurryStreamMessageSerializer frameFromStreamMessage:]",
+ "-[PFPinningObjectStore dataSource]",
+ "64Encoder",
+ "((($",
+ "__ZNSt3__121__tree_const_iteratorINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN5realm4util3AnyEEEPNS_11__tree_nodeISB_PvEElEC1B7v160006EPNS_15__tree_end_nodeIPNS_16__tree_node_baseISD_EEEE",
+ "_$ss5Int64V10RealmSwift0B15CollectionValueA2cDP9_rlmArraySo8RLMArrayCyyXlGyFZTW",
+ "_OBJC_METACLASS_$_CBLRemoteLogging",
+ "__ZN5realm7metrics7Metrics23start_write_transactionEv",
+ "_$s7DVIA_v213MenuCellModelV4itemAcA0cD4ItemO_tcfC",
+ "__ZZN5realm4List3setIRU8__strongP11objc_object18RLMAccessorContextEEvRT0_mOT_NS_12CreatePolicyEENKUlS9_E_clIPNS_10StringDataEEEDaS9_",
+ "/Users/PrateekGianchandani/Library/Developer/Xcode/DerivedData/DVIA-v2-dgvndnxqpyzdundlpvzjuxemnebv/Build/Intermediates.noindex/DVIA-v2.build/Debug-iphoneos/DVIA-v2.build/Objects-normal/arm64/YapDatabaseStatement.o",
+ "__ZNSt3__114__split_bufferINS_4pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEbEERNS5_IS8_EEED1Ev",
+ "-[FlurryDataSenderBase retransmitNotSentBlocks]",
+ "_s_0_36",
+ "/Users/PrateekGianchandani/Desktop/DVIA-v2/DVIA-v2/DVIA-v2/Vendor/CocoaLumberjack/Extensions/",
+ "__ZNSt3__15tupleIJONS_9allocatorIZN5realm12partial_sync11unsubscribeERNS3_12SubscriptionEE3$_3EEEEC1B7v160006IJS7_ELi0EEEDpOT_",
+ "@40@0:8@16q24^i32",
+ "___block_descriptor_40_e8_32s_e36_v16",
+ "__ZNKSt3__16vectorIN5realm14BindingContext13ObserverStateENS_9allocatorIS3_EEE8capacityB7v160006Ev",
+ "__ZNSt3__120__shared_ptr_emplaceIN5realm24CollectionChangeCallback4ImplIZ23RLMAddNotificationBlockINS1_7ResultsEEP20RLMNotificationTokenP11objc_objectRT_U13block_pointerFvS9_P19RLMCollectionChangeP7NSErrorEbEUlRKNS1_19CollectionChangeSetESt13exception_ptrE_EENS_9allocatorISN_EEE11__get_allocB7v160006Ev",
+ "T@\"