Initial implementation of the symbolizer server and flutter-symbolizer-bot

Symbolizer infrastructure is responsible for extracing information about
native Flutter Engine crashes from user reports and symbolizing
these crashes using archived artifacts from Cloud Storage.

flutter-symbolizer-bot is a wrapper around this infrastructure
listening to comments on Flutter repository issues and executing
commands

Change-Id: Id1ec52ff570725e24d67b5cd6ff2db1a86b32c41
Reviewed-on: https://dart-review.googlesource.com/c/dart_ci/+/168960
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
diff --git a/github-label-notifier/functions/README.md b/github-label-notifier/functions/README.md
index 9407ddb..dfeeec0 100644
--- a/github-label-notifier/functions/README.md
+++ b/github-label-notifier/functions/README.md
@@ -5,6 +5,12 @@
 It also can inspect newly opened issues for specific keywords and treat matches
 as if a specific label was assigned to an issue.
 
+Newly created issues are also fed to `crash-symbolizer`'s `/symbolize` endpoint
+in attempt to extract and symbolize any native crashes.
+
+This function is also responsible for routing comments mentioning
+`@flutter-symbolizer-bot` to `crash-symbolizer`'s '/symbolize' endpoint.
+
 # Testing
 
 To run local tests use `test.sh` script from this folder.
@@ -22,6 +28,10 @@
 [docs](https://sendgrid.com/docs/for-developers/partners/google/) for the
 initial setup).
 
+Note: Function is connecting to `crash-symbolizer` GCE instance through
+[VPC Connector](https://cloud.google.com/functions/docs/networking/connecting-vpc)
+with name `cloud-run-to-gce`.
+
 ## Firestore
 
 Firestore needs to contain `github-label-subscriptions` collection.
diff --git a/github-label-notifier/functions/deploy.sh b/github-label-notifier/functions/deploy.sh
index 0add644..825a8a3 100755
--- a/github-label-notifier/functions/deploy.sh
+++ b/github-label-notifier/functions/deploy.sh
@@ -26,5 +26,6 @@
 
 # Deploy the function.
 gcloud functions deploy githubWebhook --project dart-ci --source deploy --trigger-http \
+    --vpc-connector cloud-run-to-gce \
     --runtime nodejs10 --memory 128MB \
     --set-env-vars GITHUB_SECRET=$GITHUB_SECRET,SENDGRID_SECRET=$SENDGRID_SECRET
diff --git a/github-label-notifier/functions/lib/github_utils.dart b/github-label-notifier/functions/lib/github_utils.dart
index 6fea185..3f89192 100644
--- a/github-label-notifier/functions/lib/github_utils.dart
+++ b/github-label-notifier/functions/lib/github_utils.dart
@@ -6,6 +6,7 @@
 library github_label_notifier.github_utils;
 
 import 'dart:convert';
+import 'dart:typed_data';
 
 import 'package:node_interop/buffer.dart';
 import 'package:node_io/node_io.dart';
@@ -19,14 +20,22 @@
   if (secret == null) {
     throw 'GITHUB_SECRET is missing';
   }
-  final bodyHmac =
-      crypto.createHmac('sha1', secret).update(jsonEncode(body)).digest('hex');
+  final bodyHmac = crypto.createHmac('sha1', secret).update(body).digest('hex');
   return 'sha1=${bodyHmac}';
 }
 
 /// Validate that the given [body] and [signature] against `GITHUB_SECRET`
 /// environment variable.
 bool verifyEventSignature(dynamic body, String signature) {
+  final expectedSignature = signEvent(jsonEncode(body));
+  return signature.length == expectedSignature.length &&
+      crypto.timingSafeEqual(
+          Buffer.from(signature), Buffer.from(expectedSignature));
+}
+
+/// Validate that the given [body] and [signature] against `GITHUB_SECRET`
+/// environment variable.
+bool verifyEventSignatureRaw(Uint8List body, String signature) {
   final expectedSignature = signEvent(body);
   return signature.length == expectedSignature.length &&
       crypto.timingSafeEqual(
diff --git a/github-label-notifier/functions/lib/node_crypto.dart b/github-label-notifier/functions/lib/node_crypto.dart
index 0fa81e8..add1b5b 100644
--- a/github-label-notifier/functions/lib/node_crypto.dart
+++ b/github-label-notifier/functions/lib/node_crypto.dart
@@ -33,7 +33,7 @@
   /// Append data to the content of this [Hmac].
   ///
   /// See [docs](https://nodejs.org/api/crypto.html#crypto_hmac_update_data_inputencoding).
-  external Hmac update(String data);
+  external Hmac update(Object data);
 
   /// Compute the digest of the content accumulated via [update].
   ///
diff --git a/github-label-notifier/functions/lib/sendgrid.dart b/github-label-notifier/functions/lib/sendgrid.dart
index 588089d..a45ffa5 100644
--- a/github-label-notifier/functions/lib/sendgrid.dart
+++ b/github-label-notifier/functions/lib/sendgrid.dart
@@ -14,7 +14,7 @@
 
 final _SendgridModule _sendgrid = (() {
   // Load and configure the module.
-  final _SendgridModule module = require('@sendgrid/mail');
+  final module = require('@sendgrid/mail') as _SendgridModule;
   module.setApiKey(Platform.environment['SENDGRID_SECRET']);
 
   // To enable offline testing we redirect all requests to our mock server.
diff --git a/github-label-notifier/functions/node/index.dart b/github-label-notifier/functions/node/index.dart
index 77f6481..87946e0 100644
--- a/github-label-notifier/functions/node/index.dart
+++ b/github-label-notifier/functions/node/index.dart
@@ -2,14 +2,30 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 import 'dart:convert';
+import 'dart:typed_data';
 
 import 'package:firebase_functions_interop/firebase_functions_interop.dart';
+import 'package:js/js_util.dart';
 import 'package:node_interop/node_interop.dart';
 import 'package:node_io/node_io.dart';
+import 'package:node_http/node_http.dart' as http;
 
 import 'package:github_label_notifier/github_utils.dart';
 import 'package:github_label_notifier/sendgrid.dart' as sendgrid;
 import 'package:github_label_notifier/subscriptions_db.dart' as db;
+import 'package:symbolizer/model.dart';
+import 'package:symbolizer/parser.dart';
+import 'package:symbolizer/bot.dart';
+
+final String symbolizerServer = Platform.environment['SYMBOLIZER_SERVER'] ??
+    'crash-symbolizer.c.dart-ci.internal:4040';
+
+extension on ExpressHttpRequest {
+  Uint8List get rawBody {
+    if (!hasProperty(nativeInstance, 'rawBody')) return null;
+    return getProperty(nativeInstance, 'rawBody');
+  }
+}
 
 void main() {
   db.ensureInitialized();
@@ -51,23 +67,25 @@
   final delivery = getRequiredHeaderValue(request, 'x-github-delivery');
 
   final body = request.body;
-  if (!verifyEventSignature(body, signature)) {
+  if (!verifyEventSignatureRaw(request.rawBody, signature)) {
     throw WebHookError(
         HttpStatus.unauthorized, 'Failed to validate the signature');
   }
 
   // Event has passed the validation. Dispatch it to the handler.
-  print('Received event from GitHub: $delivery $event');
+  print('Received event from GitHub: $delivery $event ${body['action']}');
   await eventHandlers[event]?.call(body);
 
   request.response.statusCode = HttpStatus.ok;
   request.response.writeln('OK: ${event}');
 }
 
-typedef Future<void> GitHubEventHandler(Map<String, dynamic> event);
+typedef GitHubEventHandler = Future<void> Function(Map<String, dynamic> event);
 
 final eventHandlers = <String, GitHubEventHandler>{
   'issues': (event) => issueActionHandlers[event['action']]?.call(event),
+  'issue_comment': (event) =>
+      commentActionHandlers[event['action']]?.call(event)
 };
 
 final issueActionHandlers = <String, GitHubEventHandler>{
@@ -75,6 +93,10 @@
   'opened': onIssueOpened,
 };
 
+final commentActionHandlers = <String, GitHubEventHandler>{
+  'created': onIssueCommentCreated,
+};
+
 /// Handler for the 'labeled' issue event which triggers whenever an
 /// issue is labeled with a new label.
 ///
@@ -117,7 +139,7 @@
 Sent by dart-github-label-notifier.web.app
 ''',
       html: '''
-<p><strong><a href="${issueUrl}">${escape(issueTitle)}</a>&nbsp;(${escape(repositoryName)}#${escape(issueNumber)})</strong></p>
+<p><strong><a href="${issueUrl}">${escape(issueTitle)}</a>&nbsp;(${escape(repositoryName)}#${escape(issueNumber.toString())})</strong></p>
 <p>Reported by <a href="${issueReporterUrl}">${escape(issueReporterUsername)}</a></p>
 <p>Labeled <strong>${escape(labelName)}</strong> by <a href="${senderUrl}">${escape(senderUser)}</a></p>
 <hr>
@@ -131,10 +153,20 @@
 /// The handler will search the body of the open issue for specific keywords
 /// and send emails to all subscribers to a specific label.
 Future<void> onIssueOpened(Map<String, dynamic> event) async {
+  final symbolizedCrashes = <SymbolizationResult>[];
+
   final repositoryName = event['repository']['full_name'];
   final subscription = await db.lookupKeywordSubscription(repositoryName);
 
-  final match = subscription?.match(event['issue']['body']);
+  if (subscription != null &&
+      subscription.keywords.contains('crash') &&
+      containsCrash(event['issue']['body'])) {
+    symbolizedCrashes.addAll(await _trySymbolize(event['issue']));
+  }
+
+  final match = symbolizedCrashes.isNotEmpty
+      ? 'crash'
+      : subscription?.match(event['issue']['body']);
   if (match == null) {
     return;
   }
@@ -152,6 +184,40 @@
 
   final escape = htmlEscape.convert;
 
+  var symbolizedCrashesText = '', symbolizedCrashesHtml = '';
+  if (symbolizedCrashes.isNotEmpty) {
+    symbolizedCrashesText = [
+      '',
+      ...symbolizedCrashes.expand((r) => [
+            if (r.symbolized != null)
+              '# engine ${r.engineBuild.engineHash} ${r.engineBuild.variant.pretty} crash'
+            else
+              '# engine crash',
+            for (var note in r.notes)
+              if (note.message != null)
+                '# ${noteMessage[note.kind]}: ${note.message}'
+              else
+                '# ${noteMessage[note.kind]}',
+            r.symbolized ?? r.crash.frames.toString(),
+          ]),
+      ''
+    ].join('\n');
+    symbolizedCrashesHtml = symbolizedCrashes
+        .expand((r) => [
+              if (r.symbolized != null)
+                '<p>engine ${r.engineBuild.engineHash} ${r.engineBuild.variant.pretty} crash</p>'
+              else
+                '<p>engine crash</p>',
+              for (var note in r.notes)
+                if (note.message != null)
+                  '<em>${noteMessage[note.kind]}: <pre>${escape(note.message)}</pre></em>'
+                else
+                  '<em>${noteMessage[note.kind]}</em>',
+              '<pre>${escape(r.symbolized ?? r.crash.frames.toString())}</pre>',
+            ])
+        .join('');
+  }
+
   await sendgrid.sendMultiple(
       from: 'noreply@dart.dev',
       to: subscribers,
@@ -162,21 +228,37 @@
 Reported by ${issueReporterUsername}
 
 Matches keyword: ${match}
-
+${symbolizedCrashesText}
 You are getting this mail because you are subscribed to label ${subscription.label}.
 --
 Sent by dart-github-label-notifier.web.app
 ''',
       html: '''
-<p><strong><a href="${issueUrl}">${escape(issueTitle)}</a>&nbsp;(${escape(repositoryName)}#${escape(issueNumber)})</strong></p>
+<p><strong><a href="${issueUrl}">${escape(issueTitle)}</a>&nbsp;(${escape(repositoryName)}#${escape(issueNumber.toString())})</strong></p>
 <p>Reported by <a href="${issueReporterUrl}">${escape(issueReporterUsername)}</a></p>
 <p>Matches keyword: <b>${match}</b></p>
+${symbolizedCrashesHtml}
 <p>You are getting this mail because you are subscribed to label ${subscription.label}</p>
 <hr>
 <p>Sent by <a href="https://dart-github-label-notifier.web.app/">GitHub Label Notifier</a></p>
 ''');
 }
 
+Future<void> onIssueCommentCreated(Map<String, dynamic> event) async {
+  final body = event['comment']['body'];
+
+  if (Bot.isCommand(body)) {
+    final response = await http.post(
+      'http://$symbolizerServer/command',
+      body: jsonEncode(event),
+    );
+    if (response.statusCode != HttpStatus.ok) {
+      throw WebHookError(HttpStatus.internalServerError,
+          'Failed to process ${event['comment']['html_url']}: ${response.body}');
+    }
+  }
+}
+
 class WebHookError {
   final int statusCode;
   final String message;
@@ -194,3 +276,22 @@
       (throw WebHookError(
           HttpStatus.badRequest, 'Missing ${header} header value.'));
 }
+
+Future<List<SymbolizationResult>> _trySymbolize(
+    Map<String, dynamic> body) async {
+  try {
+    final response = await http
+        .post(
+          'http://$symbolizerServer/symbolize',
+          body: jsonEncode(body),
+        )
+        .timeout(const Duration(seconds: 20));
+    return [
+      for (var crash in (jsonDecode(response.body) as List))
+        SymbolizationResult.fromJson(crash)
+    ];
+  } catch (e, st) {
+    console.error('Symbolizer failed with $e: $st');
+    return [];
+  }
+}
diff --git a/github-label-notifier/functions/node/index.test.dart b/github-label-notifier/functions/node/index.test.dart
index 73ab0af..aa7f104 100644
--- a/github-label-notifier/functions/node/index.test.dart
+++ b/github-label-notifier/functions/node/index.test.dart
@@ -12,6 +12,7 @@
 import 'package:node_interop/node_interop.dart';
 import 'package:node_interop/util.dart' show dartify, jsify;
 import 'package:node_io/node_io.dart' hide HttpServer;
+import 'package:symbolizer/model.dart';
 import 'package:test/test.dart';
 
 import 'package:github_label_notifier/github_utils.dart';
@@ -28,6 +29,9 @@
   HttpServer sendgridMockServer;
   final sendgridRequests = <SendgridRequest>[];
 
+  HttpServer symbolizerServer;
+  final symbolizerCommands = <String>[];
+
   setUpAll(() async {
     // Populate firestore with mock data.
     final firestore = FirebaseAdmin.instance
@@ -62,46 +66,121 @@
             'jit',
             'aot',
             'third_party/dart',
+            'crash',
           ],
           'label': 'special-label',
         }));
 
-    // Start mock SendGrid server at the address/port specified in
-    // SENDGRID_MOCK_SERVER environment variable.
-    // This server will simply record headers and bodies of all requests
-    // it receives in the [sendgridRequests] variable.
-    sendgridMockServer = http.createServer(allowInterop((rq, rs) {
-      final body = [];
-      rq.on('data', allowInterop((chunk) {
-        body.add(chunk);
-      }));
-      rq.on('end', allowInterop(() {
-        sendgridRequests.add(SendgridRequest(
-            headers: dartify(rq.headers),
-            body: jsonDecode(_bufferToString(Buffer.concat(body)))));
+    {
+      // Start mock SendGrid server at the address/port specified in
+      // SENDGRID_MOCK_SERVER environment variable.
+      // This server will simply record headers and bodies of all requests
+      // it receives in the [sendgridRequests] variable.
+      sendgridMockServer = http.createServer(allowInterop((rq, rs) {
+        final body = [];
+        rq.on('data', allowInterop((chunk) {
+          body.add(chunk);
+        }));
+        rq.on('end', allowInterop(() {
+          sendgridRequests.add(SendgridRequest(
+              headers: dartify(rq.headers),
+              body: jsonDecode(_bufferToString(Buffer.concat(body)))));
 
-        // Reply with 200 OK.
-        rs.writeHead(200, 'OK', jsify({'Content-Type': 'text/plain'}));
-        rs.write('OK');
-        rs.end();
+          // Reply with 200 OK.
+          rs.writeHead(200, 'OK', jsify({'Content-Type': 'text/plain'}));
+          rs.write('OK');
+          rs.end();
+        }));
       }));
-    }));
 
-    final serverAddress = Platform.environment['SENDGRID_MOCK_SERVER'];
-    if (serverAddress == null) {
-      throw 'SENDGRID_MOCK_SERVER environment variable is not set';
+      final serverAddress = Platform.environment['SENDGRID_MOCK_SERVER'];
+      if (serverAddress == null) {
+        throw 'SENDGRID_MOCK_SERVER environment variable is not set';
+      }
+      final serverUri = Uri.parse('http://$serverAddress');
+      sendgridMockServer.listen(serverUri.port, serverUri.host);
     }
-    final serverUri = Uri.parse('http://$serverAddress');
-    sendgridMockServer.listen(serverUri.port, serverUri.host);
+
+    {
+      // Start mock Symbolizer server at the address/port specified in
+      // SYMBOLIZER_SERVER environment variable.
+      symbolizerServer = http.createServer(allowInterop((rq, rs) {
+        final body = [];
+        rq.on('data', allowInterop((chunk) {
+          body.add(chunk);
+        }));
+        rq.on('end', allowInterop(() {
+          switch (Uri.parse(rq.url).path) {
+            case '/symbolize':
+              // Reply with symbolized crash.
+              rs.writeHead(
+                  200, 'OK', jsify({'Content-Type': 'application/json'}));
+              rs.write(jsonEncode([
+                SymbolizationResult(
+                    crash: Crash(
+                        engineVariant: EngineVariant(
+                            arch: 'arm', os: 'ios', mode: 'debug'),
+                        format: 'native',
+                        frames: [
+                          CrashFrame.ios(
+                            no: '00',
+                            binary: 'BINARY',
+                            pc: 0x10042,
+                            symbol: '0x',
+                            offset: 42,
+                            location: '',
+                          )
+                        ]),
+                    engineBuild: EngineBuild(
+                      engineHash: 'aaabbb',
+                      variant:
+                          EngineVariant(arch: 'arm', os: 'ios', mode: 'debug'),
+                    ),
+                    symbolized: 'SYMBOLIZED_STACK_HERE')
+              ]));
+              rs.end();
+              break;
+            case '/command':
+              symbolizerCommands.add(
+                  jsonDecode(_bufferToString(Buffer.concat(body)))['comment']
+                      ['body']);
+
+              // Reply with 200 OK.
+              rs.writeHead(200, 'OK', jsify({'Content-Type': 'text/plain'}));
+              rs.write('OK');
+              rs.end();
+              break;
+            default:
+              // Reply with 404.
+              rs.writeHead(
+                  404, 'Not Found', jsify({'Content-Type': 'text/plain'}));
+              rs.write('Not Found');
+              rs.end();
+              break;
+          }
+        }));
+      }));
+
+      final serverAddress = Platform.environment['SYMBOLIZER_SERVER'];
+      if (serverAddress == null) {
+        throw 'SENDGRID_MOCK_SERVER environment variable is not set';
+      }
+      final serverUri = Uri.parse('http://$serverAddress');
+      symbolizerServer.listen(serverUri.port, serverUri.host);
+    }
   });
 
   setUp(() {
     sendgridRequests.clear();
+    symbolizerCommands.clear();
   });
 
   tearDownAll(() async {
     // Shutdown the mock SendGrid server.
     await sendgridMockServer.close();
+
+    // Shutdown the mock symbolizer.
+    await symbolizerServer.close();
   });
 
   // Helper to send a mock GitHub event to the locally running instance of the
@@ -124,8 +203,9 @@
       headers['X-GitHub-Event'] = event;
     }
 
+    final encodedBody = jsonEncode(body);
     if (signature != '') {
-      headers['X-Hub-Signature'] = signature ?? signEvent(body);
+      headers['X-Hub-Signature'] = signature ?? signEvent(encodedBody);
     }
 
     // Note: there does not seem to be a good way to get a trigger uri for
@@ -133,7 +213,7 @@
     return await http_client.post(
         'http://localhost:5001/$projectId/us-central1/githubWebhook',
         headers: headers,
-        body: jsonEncode(body));
+        body: encodedBody);
   }
 
   // Create mock event body.
@@ -186,8 +266,37 @@
         },
       };
 
+  Map<String, dynamic> makeIssueCommentEvent(
+          {int number = 1,
+          String repositoryName = 'dart-lang/webhook-test',
+          String issueBody =
+              'This is an amazing ../third_party/dart/runtime/vm solution',
+          String commentBody = 'comment body goes here',
+          String authorAssociation = 'NONE'}) =>
+      {
+        'action': 'created',
+        'issue': {
+          'html_url':
+              'https://github.com/dart-lang/webhook-test/issues/${number}',
+          'number': number,
+          'title': 'TEST ISSUE TITLE',
+          'body': issueBody,
+          'user': {
+            'login': 'hest',
+            'html_url': 'https://github.com/hest',
+          },
+        },
+        'comment': {
+          'body': commentBody,
+          'author_association': authorAssociation,
+        },
+        'repository': {
+          'full_name': 'dart-lang/webhook-test',
+        },
+      };
+
   test('signing', () {
-    expect(signEvent(makeLabeledEvent(labelName: 'bug')),
+    expect(signEvent(jsonEncode(makeLabeledEvent(labelName: 'bug'))),
         equals('sha1=76af51cdb9c7a43b146d4df721ac8f83e53182e5'));
   });
 
@@ -347,6 +456,35 @@
     expect(rs.statusCode, equals(HttpStatus.ok));
     expect(sendgridRequests.length, equals(0));
   });
+
+  test('ok - issue opened - crash', () async {
+    final rs = await sendEvent(body: makeIssueOpenedEvent(body: '''
+I had Flutter engine c_r_a_s_h on me with the following message
+
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+Such c_r_a_s_h
+Much information
+'''));
+    expect(rs.statusCode, equals(HttpStatus.ok));
+    expect(sendgridRequests.length, equals(1));
+    final rq = sendgridRequests.first;
+    final plainTextBody = rq.body['content']
+        .firstWhere((c) => c['type'] == 'text/plain')['value'];
+    expect(plainTextBody, contains('engine aaabbb ios-arm-debug crash'));
+    expect(plainTextBody, contains('SYMBOLIZED_STACK_HERE'));
+  });
+
+  test('ok - issue comment - forward bot command', () async {
+    final command = '''@flutter-symbolizer-bot aaa bbb''';
+    final rs = await sendEvent(
+        event: 'issue_comment',
+        body: makeIssueCommentEvent(
+          commentBody: command,
+          authorAssociation: 'MEMBER',
+        ));
+    expect(rs.statusCode, equals(HttpStatus.ok));
+    expect(symbolizerCommands, equals([command]));
+  });
 }
 
 /// Helper method to convert a [Buffer] to a [String].
@@ -363,4 +501,6 @@
   final Map<String, dynamic> body;
 
   SendgridRequest({this.headers, this.body});
+
+  Map<String, dynamic> toJson() => {'headers': headers, 'body': body};
 }
diff --git a/github-label-notifier/functions/pubspec.yaml b/github-label-notifier/functions/pubspec.yaml
index 69e0c32..d631086 100644
--- a/github-label-notifier/functions/pubspec.yaml
+++ b/github-label-notifier/functions/pubspec.yaml
@@ -3,9 +3,10 @@
   Cloud Function that can serve as a GitHub WebHook which sends notifications
   to developers subscribed to a particular label.
 version: 0.0.1
+publish_to: none
 
 environment:
-  sdk: '>=2.3.0 <3.0.0'
+  sdk: '>=2.6.0 <3.0.0'
 
 dependencies:
   firebase_functions_interop: ^1.0.0
@@ -14,6 +15,8 @@
   node_io: ^1.0.1
   js: any
   test: any
+  symbolizer:
+    path: ../symbolizer
 
 dev_dependencies:
   # Needed to compile Dart to valid Node.js module.
diff --git a/github-label-notifier/functions/run.sh b/github-label-notifier/functions/run.sh
new file mode 100755
index 0000000..d17724c
--- /dev/null
+++ b/github-label-notifier/functions/run.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+set -e
+
+export SYMBOLIZER_SERVER=localhost:4040
+
+# Don't use real SendGrid servers during testing - instead redirect API
+# calls to a mock server.
+export SENDGRID_MOCK_SERVER=localhost:8151
+
+# Note: these are randomly generated secrets purely for testing purposes.
+# They should not be used during deployment.
+export GITHUB_SECRET=f32205e9a6d0b8157dcc1935af96aa9fe5719109
+export SENDGRID_SECRET=SG.I9JN-n6oQb-X686126S.qJasdasdasda_lyadasd
+
+pub run build_runner build --output=build
+
+firebase emulators:start --project github-label-notifier
diff --git a/github-label-notifier/functions/test.sh b/github-label-notifier/functions/test.sh
index 8cc82f8..d5eb226 100755
--- a/github-label-notifier/functions/test.sh
+++ b/github-label-notifier/functions/test.sh
@@ -9,6 +9,10 @@
 # calls to a mock server.
 export SENDGRID_MOCK_SERVER=localhost:8151
 
+# Similarly don't use real symbolizer server. We are going to start our own
+# mock server.
+export SYMBOLIZER_SERVER=localhost:4040
+
 # Note: these are randomly generated secrets purely for testing purposes.
 # They should not be used during deployment.
 export GITHUB_SECRET=f32205e9a6d0b8157dcc1935af96aa9fe5719109
diff --git a/github-label-notifier/symbolizer/.gitignore b/github-label-notifier/symbolizer/.gitignore
new file mode 100644
index 0000000..23a5b01
--- /dev/null
+++ b/github-label-notifier/symbolizer/.gitignore
@@ -0,0 +1,20 @@
+# Files and directories created by pub
+.dart_tool/
+.packages
+# Remove the following pattern if you wish to check in your lock file
+pubspec.lock
+
+# Conventional directory for build outputs
+build/
+
+# Directory created by dartdoc
+doc/api/
+
+# Configuration containing private tokens
+.*.json
+symbols-cache
+tools
+deploy
+
+# We commit our generated files.
+!*.g.dart
diff --git a/github-label-notifier/symbolizer/README-bot.md b/github-label-notifier/symbolizer/README-bot.md
new file mode 100644
index 0000000..277a8b3
--- /dev/null
+++ b/github-label-notifier/symbolizer/README-bot.md
@@ -0,0 +1,110 @@
+<!--
+This is flutter-symbolizer-bot README file. If you are making changes to
+this file update https://github.com/flutter-symbolizer-bot/flutter-symbolizer-bot/blob/main/README.md
+as well
+-->
+
+### Hi there 👋
+
+I am a bot that can symbolize Flutter Engine crashes. If you have any bug
+reports or questions contact @mraleph
+
+👉 **I only answer to commands of public members of Flutter GitHub org!** To
+check whether your membership is public just open your profile in Incognito
+Window and check if Flutter org badge is visible. Read more about org membership
+privacy settings [here](https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership).
+
+I can automatically detect the following crashes:
+
+- Android crashes marked with `*** *** *** ... *** *** ***` line.
+- iOS crashes starting with `Incident Identifier: ...` line.
+
+For symbolization I would need to know engine commit hash and build mode. I
+support extracting engine version from `flutter doctor` output (with or
+without `-v`) and I can sometimes guess build mode (e.g. by using `Build ID`
+included into stack traces on Android).
+
+However often reports don't include all required information or don't use native
+format so you would need to provide me with additional hints, see
+[Commands](#commands) below.
+
+### Commands
+
+When you mention me in the comment you can include a number of
+_symbolization overrides_ which would fill in the gaps in information for me.
+
+```
+@flutter-symbolizer-bot [engine#<sha>|flutter#<commit>] [profile|release|debug] [x86|arm|arm64|x64]
+```
+
+**Important ⚠️**: `@flutter-symbolizer-bot` **MUST** be the very first thing
+in your comment.
+
+- `engine#<sha>` allows to specify which _engine commit_ I should use;
+- `flutter#<commit>` allows to specify which Flutter Framework commit I
+  should use (this is just another way of specifiying engine commit);
+- `profile|release|debug` tells me which _build mode_ I should use (iOS builds
+  only have `release` symbols available though);
+- `x86|arm|arm64|x64` tells me which _architecture_ I should use.
+
+You can point me to a specific comment by including the link to it:
+
+```
+@flutter-symbolizer-bot [link|this]
+```
+
+- `link`, which looks like
+  `https://github.com/flutter/flutter/issues/ISSUE#issue(comment)?-ID`, asks me
+   to look for crashes in the specific comment;
+- `this` asks me to symbolize content of
+  _the comment which contains the command_.
+
+If your backtrace comes from Crashlytics with lines that look like this:
+
+```
+4  Flutter                        0x106013134 (Missing)
+```
+
+You would need to tell me `@flutter-symbolizer-bot force ios [arm64|arm] [engine#<sha>|flutter#<commit>] link|this`:
+
+- `force ios` tells me to ignore native crash markers and simply look for lines
+  that match `ios` backtrace format;
+- `[arm64|arm]` gives me information about architecture, which is otherwise
+  missing from the report;
+- `engine#sha|flutter#commit` gives me engine version;
+- `link|this` specifies which comment to symbolize. Note ⚠️: because this is a
+  departure from native crash report formats you *must* tell me which comment
+  to symbolize manually
+
+If your backtrace has lines that look like this:
+
+```
+0x0000000105340708(Flutter + 0x002b4708)
+```
+
+You would need to tell me `@flutter-symbolizer-bot internal [arm64|arm] [engine#<sha>|flutter#<commit>] link|this`:
+
+- `internal` tells me to ignore native crash markers and look for lines that
+  match _internal_ backtrace format.
+
+### Note about Relative PCs
+
+To symbolize stack trace correctly I need to know PC relative to binary image
+load base. Native crash formats usually include this information:
+
+- On Android `pc` column actually contains relative PCs rather then absolute.
+  Though Android versions prior to Android 11 have issues with their unwinder
+  which makes these relative PCs skewed in different ways (see
+  [this bug](https://github.com/android/ndk/issues/1366) for more information).
+  I try my best to correct for these known issues;
+- On iOS I am looking for lines like this `Flutter + <rel-pc>` which gives me
+  necessary information.
+
+Some crash formats (Crashlytics) do not contain neither load base nor relative
+PCs. In this case I try to determine load base heuristically based on the set
+of return addresses available in the backtrace: I look through Flutter Engine
+binary for all call sites and then iterate through potential load bases to see
+if one of them makes all of PCs present in the backtrace fall onto callsites.
+The pattern of call sites in the binary is often unique enough for me to be
+able to determine a single possible load base based on 3-4 unique return
+addresses.
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/README.md b/github-label-notifier/symbolizer/README.md
new file mode 100644
index 0000000..ea09771
--- /dev/null
+++ b/github-label-notifier/symbolizer/README.md
@@ -0,0 +1,122 @@
+This folder contains implementation of symbolization tooling capable of
+extracting Android and iOS crashes from plain text comments on GitHub and
+then automatically symbolize these crash reports using Flutter Engine symbols
+stored in the Cloud Storage.
+
+# `bin/server.dart`
+
+Server exposing simple HTTP API to this functionality. It has two endpoints:
+
+- `POST /symbolize` with GitHub's `issue` JSON payload runs symbolization on the
+  issue's body and returns result as a JSON serialized list of
+  `SymbolizationResult`.
+- `POST /command` with GitHub's [`issue_comment`](https://docs.github.com/en/free-pro-team@latest/developers/webhooks-and-events/webhook-events-and-payloads#issue_comment)
+  payload executes the given comment as a bot command (if it represents one).
+
+Note: the server itself does not listen to GitHub events - instead there is a
+Cloud Function exposed as a GitHub WebHook which routes relevant
+`issue_comment` events to it.
+
+# Scripts
+
+## `bin/configure.dart`
+
+Creates `.config.json` with authorization tokens. It is recommended to run
+this script to at least configure GitHub OAuth token to ensure that
+you don't hit GitHub's API quota limits for unauthorized users.
+
+```console
+$ bin/configure.dart --github-token ... --sendgrid-token ... --failure-email ...
+```
+
+## `bin/command.dart`
+
+```console
+$ bin/command.dart [--act] <issue-number> 'keywords*'
+```
+
+Execute the given string of keywords as a `@flutter-symbolizer-bot` command in
+context of the issue with the given `issue-number` number.
+
+By default would simply print `@flutter-symbolizer-bot` response to stdout.
+
+If `--act` is passed then bot would actually post a comment with its response
+to the issue using GitHub OAuth token from `.config.json`.
+
+## `bin/symbolize.dart`
+
+```console
+$ bin/symbolize.dart <input-file> 'keywords*'
+```
+
+Symbolize contents of the given file using overrides specified through keywords.
+
+# Development
+
+## Tokens
+
+You would at minimum need GitHub OAuth token to run test - otherwise they
+hit GitHub API limits for unauthorized users and timeout.
+
+Run `bin/configure.dart` to create `.config.json`.
+
+```
+bin/configure.dart --github-token ... --sendgrid-token ... --failure-email ...
+```
+
+## NDK tooling
+
+To run tests or scripts locally you would need to create `tools` folder
+containing a small subset of NDK tooling. This is done by running
+
+```console
+$ ./get-tools-from-ndk.sh <path-to-ndk>
+```
+
+## Changing `model.dart`
+
+We use [`freezed`](https://pub.dev/packages/freezed) to define our model
+classes. To regenerate `model.g.dart` and `mode.freezed.dart` after editing
+`model.dart` run:
+
+```console
+$ pub run build_runner build
+```
+
+# Testing
+
+```console
+$ pub run test -j1 --no-chain-stack-traces
+```
+
+- `-j1` is needed to avoid racy access to symbols cache from multiple
+  tests
+- `--no-chain-stack-traces` needed to avoid timeouts caused by
+  stack trace chaining overheads.
+
+To update expectation files set `REGENERATE_EXPECTATIONS` environment
+variable to `true` (`export REGENERATE_EXPECTATIONS=true`).
+
+# Deployment
+
+Bot is running on `crash-symbolizer` Compute Engine instance and is kept
+alive by `superviserd`. The GCE instance is not directly reachable from
+the outside world. To deploy a new version run:
+
+```console
+$ GITHUB_TOKEN=... SENDGRID_TOKEN=... FAILURE_EMAIL=... ./deploy.sh
+```
+
+- `GITHUB_TOKEN` provides OAuth token for `flutter-symbolizer-bot` account;
+- `SENDGRID_TOKEN` provides SendGrid API token
+- `FAILURE_EMAIL` configures email that bot should report exceptions to.
+- Under certain conditions your machine might not be able to connect to
+  GCE instance. In this case you will need to proxy your deployment through
+  another machine that *can* connect to the instance. You can specify
+  this "proxy" machine via `DEPLOYMENT_PROXY`.
+
+## SDK version
+
+We deploy the code in form of Kernel binary - which means your local SDK
+needs to match the version of Dart SDK installed on `crash-symbolizer`.
+Deployment script will verify this for you.
diff --git a/github-label-notifier/symbolizer/analysis_options.yaml b/github-label-notifier/symbolizer/analysis_options.yaml
new file mode 100644
index 0000000..ab43a2d
--- /dev/null
+++ b/github-label-notifier/symbolizer/analysis_options.yaml
@@ -0,0 +1,16 @@
+# Defines a default set of lint rules enforced for
+# projects at Google. For details and rationale,
+# see https://github.com/dart-lang/pedantic#enabled-lints.
+include: package:pedantic/analysis_options.yaml
+
+# For lint rules and documentation, see http://dart-lang.github.io/linter/lints.
+# Uncomment to specify additional rules.
+linter:
+  rules:
+    - prefer_final_locals
+
+analyzer:
+  errors:
+    missing_required_param: error
+#   exclude:
+#     - path/to/excluded/files/**
diff --git a/github-label-notifier/symbolizer/bin/command.dart b/github-label-notifier/symbolizer/bin/command.dart
new file mode 100755
index 0000000..2ac4e90
--- /dev/null
+++ b/github-label-notifier/symbolizer/bin/command.dart
@@ -0,0 +1,74 @@
+#!/usr/bin/env dart
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+
+import 'package:args/args.dart';
+import 'package:github/github.dart';
+import 'package:logging/logging.dart';
+import 'package:sendgrid_mailer/sendgrid_mailer.dart';
+import 'package:symbolizer/bot.dart';
+import 'package:symbolizer/config.dart';
+import 'package:symbolizer/ndk.dart';
+import 'package:symbolizer/symbolizer.dart';
+import 'package:symbolizer/symbols.dart';
+
+const isDev = bool.fromEnvironment('DEV');
+
+final bindHostname = isDev
+    ? InternetAddress.loopbackIPv4
+    : 'crash-symbolizer.c.dart-ci.internal';
+
+final log = Logger('server');
+
+final config = loadConfigFromFile();
+
+final argParser = ArgParser(allowTrailingOptions: false)
+  ..addFlag(
+    'act',
+    help: 'Post comment on GitHub (by default '
+        'results are printed into stdout instead)',
+    negatable: false,
+    defaultsTo: false,
+  );
+
+Future<void> main(List<String> args) async {
+  final opts = argParser.parse(args);
+  if (opts.rest.length != 2) {
+    print('''Usage: command.dart [--act] <issue-number> <command>
+${argParser.usage}''');
+    exit(1);
+  }
+  final issueNumber = int.parse(opts.rest[0]);
+  final command = opts.rest[1];
+
+  Logger.root.level = Level.ALL;
+  Logger.root.onRecord.listen((record) {
+    print('${record.level.name}: ${record.time}: ${record.message}');
+  });
+
+  final mailer = Mailer(config.sendgridToken);
+  final ndk = Ndk();
+  final symbols = SymbolsCache(path: 'symbols-cache', ndk: ndk);
+  final github = GitHub(auth: Authentication.withToken(config.githubToken));
+
+  final symbolizer = Symbolizer(symbols: symbols, ndk: ndk, github: github);
+  final bot = Bot(
+    github: github,
+    symbolizer: symbolizer,
+    mailer: mailer,
+    failuresEmail: config.failureEmail,
+    dryRun: !opts['act'],
+  );
+
+  final repo = RepositorySlug('flutter', 'flutter');
+  await bot.executeCommand(
+    repo,
+    await github.issues.get(repo, issueNumber),
+    IssueComment(body: '${Bot.accountMention} ${command}'),
+    authorized: true,
+  );
+  github.dispose();
+}
diff --git a/github-label-notifier/symbolizer/bin/configure.dart b/github-label-notifier/symbolizer/bin/configure.dart
new file mode 100755
index 0000000..79d27f6
--- /dev/null
+++ b/github-label-notifier/symbolizer/bin/configure.dart
@@ -0,0 +1,39 @@
+#!/usr/bin/env dart
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:args/args.dart';
+import 'package:symbolizer/model.dart';
+
+final parser = ArgParser()
+  ..addOption('github-token',
+      help: 'GitHub OAuth token',
+      defaultsTo: Platform.environment['GITHUB_TOKEN'])
+  ..addOption('sendgrid-token',
+      help: 'SendGrid API token',
+      defaultsTo: Platform.environment['SENDGRID_TOKEN'])
+  ..addOption('failure-email',
+      help: 'Email for failure reports',
+      defaultsTo: Platform.environment['FAILURE_EMAIL'])
+  ..addOption('output', help: 'Config to write', defaultsTo: '.config.json');
+
+void main(List<String> args) {
+  final opts = parser.parse(args);
+  for (var opt in ['github-token', 'sendgrid-token', 'failure-email']) {
+    if (opts[opt].isEmpty) {
+      throw 'Pass non-empty value via --${opt} or through'
+          ' ${opt.toUpperCase().replaceAll('-', '_')} environment variable';
+    }
+  }
+
+  final config = ServerConfig(
+    githubToken: opts['github-token'],
+    sendgridToken: opts['sendgrid-token'],
+    failureEmail: opts['failure-email'],
+  );
+  File(opts['output']).writeAsStringSync(jsonEncode(config));
+}
diff --git a/github-label-notifier/symbolizer/bin/server.dart b/github-label-notifier/symbolizer/bin/server.dart
new file mode 100755
index 0000000..050e622
--- /dev/null
+++ b/github-label-notifier/symbolizer/bin/server.dart
@@ -0,0 +1,52 @@
+#!/usr/bin/env dart
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+
+import 'package:github/github.dart';
+import 'package:logging/logging.dart';
+import 'package:sendgrid_mailer/sendgrid_mailer.dart';
+import 'package:symbolizer/bot.dart';
+import 'package:symbolizer/config.dart';
+import 'package:symbolizer/ndk.dart';
+import 'package:symbolizer/symbolizer.dart';
+import 'package:symbolizer/symbols.dart';
+import 'package:symbolizer/server.dart';
+
+const isDev = bool.fromEnvironment('DEV');
+
+final bindHostname = isDev
+    ? InternetAddress.loopbackIPv4
+    : 'crash-symbolizer.c.dart-ci.internal';
+
+final log = Logger('server');
+
+final config = loadConfigFromFile();
+
+Future<void> main() async {
+  Logger.root.level = Level.ALL;
+  Logger.root.onRecord.listen((record) {
+    print('${record.level.name}: ${record.time}: ${record.message}');
+  });
+
+  final mailer = Mailer(config.sendgridToken);
+  final ndk = Ndk();
+  final symbols = SymbolsCache(path: 'symbols-cache', ndk: ndk);
+  final github = GitHub(auth: Authentication.withToken(config.githubToken));
+
+  final symbolizer = Symbolizer(symbols: symbols, ndk: ndk, github: github);
+  final bot = Bot(
+      github: github,
+      symbolizer: symbolizer,
+      mailer: mailer,
+      failuresEmail: config.failureEmail);
+
+  await serve(
+    bindHostname,
+    4040,
+    symbolizer: symbolizer,
+    bot: bot,
+  );
+}
diff --git a/github-label-notifier/symbolizer/bin/symbolize.dart b/github-label-notifier/symbolizer/bin/symbolize.dart
new file mode 100755
index 0000000..36911e4
--- /dev/null
+++ b/github-label-notifier/symbolizer/bin/symbolize.dart
@@ -0,0 +1,45 @@
+#!/usr/bin/env dart
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Primitive CLI for the symbolizer. Usage:
+///
+///    symbolize <input-file> [overrides]
+///
+
+import 'dart:io';
+
+import 'package:github/github.dart';
+import 'package:logging/logging.dart';
+import 'package:symbolizer/config.dart';
+import 'package:symbolizer/ndk.dart';
+import 'package:symbolizer/symbolizer.dart';
+import 'package:symbolizer/symbols.dart';
+import 'package:symbolizer/bot.dart';
+
+final config = loadConfigFromFile();
+
+void main(List<String> args) async {
+  Logger.root.level = Level.ALL;
+  Logger.root.onRecord.listen((record) {
+    print('${record.level.name}: ${record.time}: ${record.message}');
+  });
+
+  final ndk = Ndk();
+  final symbols = SymbolsCache(path: 'symbols-cache', ndk: ndk);
+  final github = GitHub();
+
+  final symbolizer = Symbolizer(symbols: symbols, ndk: ndk, github: github);
+  final input = File(args.first).readAsStringSync();
+
+  final command = args.length >= 2
+      ? Bot.parseCommand(0, '${Bot.accountMention} ${args.skip(1).join(' ')}')
+      : Bot.parseCommand(0, input);
+
+  try {
+    print(await symbolizer.symbolize(input, overrides: command?.overrides));
+  } finally {
+    github.dispose();
+  }
+}
diff --git a/github-label-notifier/symbolizer/deploy.sh b/github-label-notifier/symbolizer/deploy.sh
new file mode 100755
index 0000000..d989e26
--- /dev/null
+++ b/github-label-notifier/symbolizer/deploy.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+set -xe
+
+if [[ ! -f "tools/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-symbolizer" ]]; then
+  echo "Missing linux-x86_64 build of llvm-symbolizer."
+  echo "Point get-tools-from-ndk.sh to Linux NDK to extract it."
+  exit 1
+fi
+
+if [[ ! -f "tools/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-readelf" ]]; then
+  echo "Missing linux-x86_64 build of x86_64-linux-android-readelf."
+  echo "Point get-tools-from-ndk.sh to Linux NDK to extract it."
+  exit 1
+fi
+
+if [[ ! -f "tools/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump" ]]; then
+  echo "Missing linux-x86_64 build of llvm-objdump."
+  echo "Point get-tools-from-ndk.sh to Linux NDK to extract it."
+  exit 1
+fi
+
+DART_VERSION=$(dart --version 2>&1 | grep -o -e '\d*\.\d*.\d*')
+
+if [[ $DART_VERSION != "2.10.1" ]]; then
+  echo "Version mismatch with server version: $DART_VERSION expected 2.10.1"
+  exit 1
+fi
+
+# Run all tests
+pub run test --no-chain-stack-traces -j1
+
+rm -rf deploy
+mkdir -p deploy/symbolizer
+dart --snapshot-kind=kernel --snapshot=deploy/symbolizer/symbolizer.dill bin/server.dart
+cp -r tools deploy/symbolizer/tools
+dart bin/configure.dart --output=deploy/symbolizer/.config.json \
+                        --github-token=$GITHUB_TOKEN            \
+                        --sendgrid-token=$SENDGRID_TOKEN        \
+                        --failure-email=$FAILURE_EMAIL
+pushd deploy
+zip -r symbolizer.zip symbolizer
+rm -rf symbolizer
+popd
+
+cat <<EOT >deploy/deploy.sh
+#!/bin/sh
+
+set -ex
+
+DEPLOY_CMD='rm -rf symbolizer && unzip symbolizer.zip && sudo supervisorctl restart all'
+gcloud beta compute scp --zone "us-central1-a" --project "dart-ci" symbolizer.zip crash-symbolizer:~/
+gcloud beta compute ssh --zone "us-central1-a" --project "dart-ci" --command "\$DEPLOY_CMD" crash-symbolizer
+EOT
+chmod +x deploy/deploy.sh
+
+if [[ -z "$DEPLOYMENT_PROXY" ]]; then
+  cd deploy && ./deploy.sh
+else
+  scp deploy/symbolizer.zip $DEPLOYMENT_PROXY:/tmp/symbolizer.zip
+  scp deploy/deploy.sh $DEPLOYMENT_PROXY:/tmp/deploy.sh
+  ssh $DEPLOYMENT_PROXY 'cd /tmp && ./deploy.sh'
+fi
diff --git a/github-label-notifier/symbolizer/get-tools-from-ndk.sh b/github-label-notifier/symbolizer/get-tools-from-ndk.sh
new file mode 100755
index 0000000..4bd70eb
--- /dev/null
+++ b/github-label-notifier/symbolizer/get-tools-from-ndk.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+set -xe
+
+NDK=$1
+OS=$2
+
+if [[ -z $OS ]]; then
+  OS=$(uname | tr '[:upper:]' '[:lower:]')
+fi
+
+echo "Running with NDK $NDK for OS $OS"
+
+for BINARY in "x86_64-linux-android-readelf" "llvm-symbolizer" "llvm-objdump"; do
+  mkdir -p tools/android-ndk/toolchains/llvm/prebuilt/$OS-x86_64/bin/
+  cp $NDK/toolchains/llvm/prebuilt/$OS-x86_64/bin/$BINARY tools/android-ndk/toolchains/llvm/prebuilt/$OS-x86_64/bin/$BINARY
+done
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/lib/bot.dart b/github-label-notifier/symbolizer/lib/bot.dart
new file mode 100644
index 0000000..776de4e
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/bot.dart
@@ -0,0 +1,470 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Implementation of @flutter-symbolizer-bot.
+///
+/// The bot is triggered by command comments starting with bot mention
+/// and followed by zero of more keywords.
+///
+/// See README-bot.md for bot command documentation.
+library symbolizer.bot;
+
+import 'dart:convert';
+
+import 'package:github/github.dart';
+import 'package:logging/logging.dart';
+import 'package:meta/meta.dart';
+import 'package:sendgrid_mailer/sendgrid_mailer.dart';
+
+import 'package:symbolizer/model.dart';
+import 'package:symbolizer/parser.dart';
+import 'package:symbolizer/symbolizer.dart';
+
+final _log = Logger(Bot.account);
+
+class Bot {
+  final GitHub github;
+  final Symbolizer symbolizer;
+  final Mailer mailer;
+  final String failuresEmail;
+  final bool dryRun;
+
+  Bot({
+    @required this.github,
+    @required this.symbolizer,
+    @required this.mailer,
+    @required this.failuresEmail,
+    this.dryRun = false,
+  });
+
+  static final account = 'flutter-symbolizer-bot';
+  static final accountMention = '@$account';
+
+  /// Returns [true] if the given [text] is potentially a command to the bot.
+  static bool isCommand(String text) {
+    return text.startsWith(Bot.accountMention);
+  }
+
+  /// Parse the given [text] as a command to the bot. See the library doc
+  /// comment at the beginning of the file for information about the command
+  /// format.
+  static BotCommand parseCommand(int issueNumber, String text) {
+    final command = text.split('\n').first;
+    if (!isCommand(command)) {
+      return null;
+    }
+
+    final issueNumberStr = issueNumber.toString();
+
+    var symbolizeThis = false;
+    final worklist = <String>{};
+    String engineHash;
+    String flutterVersion;
+    String os;
+    String arch;
+    String mode;
+    String format;
+    var force = false;
+
+    // Command is just a sequence of keywords which specify which comments
+    // to symbolize and which symbols to use.
+    for (var keyword in command.split(' ').skip(1)) {
+      switch (keyword) {
+        case 'this':
+          symbolizeThis = true;
+          break;
+        case 'x86':
+        case 'arm':
+        case 'arm64':
+        case 'x64':
+          arch = keyword;
+          break;
+        case 'debug':
+        case 'profile':
+        case 'release':
+          mode = keyword;
+          break;
+        case 'internal':
+          format = 'internal';
+          break;
+        case 'force':
+          force = true;
+          break;
+        case 'ios':
+          os = 'ios';
+          break;
+        default:
+          // Check if this keyword is a link to an comment on this issue.
+          var m = _commentLinkPattern.firstMatch(keyword);
+          if (m != null) {
+            if (m.namedGroup('issueNumber') == issueNumberStr) {
+              worklist.add(m.namedGroup('ref'));
+            }
+            break;
+          }
+
+          // Check if this keyword is an engine hash.
+          m = _engineHashPattern.firstMatch(keyword);
+          if (m != null) {
+            engineHash = m.namedGroup('sha');
+            break;
+          }
+
+          m = _flutterHashOrVersionPattern.firstMatch(keyword);
+          if (m != null) {
+            flutterVersion = m.namedGroup('version');
+            break;
+          }
+          break;
+      }
+    }
+
+    return BotCommand(
+      symbolizeThis: symbolizeThis,
+      worklist: worklist,
+      overrides: SymbolizationOverrides(
+        arch: arch,
+        engineHash: engineHash,
+        flutterVersion: flutterVersion,
+        mode: mode,
+        os: os,
+        force: force,
+        format: format,
+      ),
+    );
+  }
+
+  /// Execute command contained in the given [commandComment] posted on the
+  /// [issue] in the repository [repo].
+  Future<void> executeCommand(
+    RepositorySlug repo,
+    Issue issue,
+    IssueComment commandComment, {
+    @required bool authorized,
+  }) async {
+    if (!authorized) {
+      await github.issues.createComment(repo, issue.number, '''
+@${commandComment.user.login} Sorry, only **public members of Flutter org** can trigger my services.
+
+Check your privacy settings as described [here](https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership).
+''');
+      return;
+    }
+
+    final command = parseCommand(issue.number, commandComment.body);
+    if (command == null) {
+      return;
+    }
+
+    // Comments which potentially contain crashes by their id.
+    Map<int, _Comment> worklist;
+    if (command.shouldProcessAll) {
+      worklist = await processAllComments(repo, issue);
+    } else {
+      worklist = {};
+      if (command.symbolizeThis) {
+        worklist[commandComment.id] = _Comment.fromComment(commandComment);
+      }
+
+      // Process worklist from the command and fetch comment bodies.
+      for (var ref in command.worklist) {
+        // ref has one of the following formats: issue-id or issuecomment-id
+        final c = ref.split('-');
+        final id = int.parse(c[1]);
+        if (c[0] == 'issue') {
+          worklist[issue.id] = _Comment.fromIssue(issue);
+        } else {
+          try {
+            final comment = await github.issues.getComment(repo, id);
+            worklist[comment.id] = _Comment.fromComment(comment);
+          } catch (e) {
+            // Ignore.
+          }
+        }
+      }
+    }
+
+    // Process comments from the worklist.
+    await symbolizeGiven(
+        repo, issue, commandComment.user, worklist, command.overrides);
+  }
+
+  /// Find all comments on the [issue] which potentially contain crashes
+  /// and were not previously symbolized by the bot.
+  Future<Map<int, _Comment>> processAllComments(
+      RepositorySlug repo, Issue issue) async {
+    _log.info(
+        'Requested to symbolize all comments on ${repo.fullName}#${issue.number}');
+
+    // Dictionary of comments to symbolize by their id.
+    final worklist = <int, _Comment>{};
+    final alreadySymbolized = <int>{};
+
+    // Collect all comments which might contain crashes in the worklist
+    // and ids of already symbolized comments in the [alreadySymbolized] set.
+    if (containsCrash(issue.body)) {
+      worklist[issue.id] = _Comment.fromIssue(issue);
+    }
+    await for (var comment
+        in github.issues.listCommentsByIssue(repo, issue.number)) {
+      if (comment.user.login == Bot.account) {
+        // From comments by the bot extract ids of already symbolized comments.
+        // Bot adds it to its comments as a JSON encoded object within
+        // HTML comment: <!-- {"symbolized": [id0, id1, ...]} -->
+        final m = _botInfoPattern.firstMatch(comment.body);
+        if (m != null) {
+          final state = jsonDecode(m.namedGroup('json').trim());
+          if (state is Map<String, dynamic> &&
+              state.containsKey('symbolized')) {
+            alreadySymbolized
+                .addAll((state['symbolized'] as List<dynamic>).cast<int>());
+          }
+        }
+      } else if (containsCrash(comment.body)) {
+        worklist[comment.id] = _Comment.fromComment(comment);
+      }
+    }
+
+    _log.info(
+        'Found comments with crashes ${worklist.keys}, and already symbolized ${alreadySymbolized}');
+    alreadySymbolized.forEach(worklist.remove);
+    return worklist;
+  }
+
+  /// Symbolize crashes from all comments in the [worklist] using the given
+  /// [overrides] and post response on the issue.
+  Future<void> symbolizeGiven(
+      RepositorySlug repo,
+      Issue issue,
+      User commandUser,
+      Map<int, _Comment> worklist,
+      SymbolizationOverrides overrides) async {
+    _log.info('Symbolizing ${worklist.keys} with overrides {$overrides}');
+
+    // Symbolize all collected comments.
+    final symbolized = <int, List<SymbolizationResult>>{};
+    for (var comment in worklist.values) {
+      final result =
+          await symbolizer.symbolize(comment.body, overrides: overrides);
+      if (result.isNotEmpty) {
+        symbolized[comment.id] = result;
+      }
+    }
+
+    if (symbolized.isEmpty) {
+      await github.issues.createComment(repo, issue.number, '''
+@${commandUser.login} No crash reports found. I used the following overrides
+when looking for reports
+
+```
+$overrides
+```
+
+Note that I can only find native Android and iOS crash reports automatically,
+you need to explicitly point me to crash reports in other supported formats.
+
+If the crash report is embedded into a log and prefixed with additional
+information I might not be able to automatically strip those prefixes.
+Currently I only support `flutter run -v`, `adb logcat` and device lab logs.
+
+See [my documentation](https://github.com/flutter-symbolizer-bot/flutter-symbolizer-bot/blob/main/README.md#commands) for more details on how to do that.
+''');
+      return;
+    }
+
+    // Post a comment containing all successfully symbolized crashes.
+    await postResultComment(repo, issue, worklist, symbolized);
+    await mailFailures(repo, issue, worklist, symbolized);
+  }
+
+  /// Post a comment on the issue commenting successfully symbolized crashes.
+  void postResultComment(
+      RepositorySlug repo,
+      Issue issue,
+      Map<int, _Comment> comments,
+      Map<int, List<SymbolizationResult>> symbolized) async {
+    if (symbolized.isEmpty) {
+      return;
+    }
+
+    final successes = symbolized.whereResult((r) => r.symbolized != null);
+    final failures = symbolized.whereResult((r) => r.symbolized == null);
+
+    final buf = StringBuffer();
+    for (var entry in successes.entries) {
+      for (var result in entry.value) {
+        buf.write('''
+crash from ${comments[entry.key].url} symbolized using symbols for `${result.engineBuild.engineHash}` `${result.engineBuild.variant.os}-${result.engineBuild.variant.arch}-${result.engineBuild.variant.mode}`
+```
+${result.symbolized}
+```
+''');
+        for (var note in result.notes) {
+          buf.write('_(${noteMessage[note.kind]}');
+          if ((note.message ?? '').isNotEmpty) {
+            buf.write(': ');
+            buf.write(note.message);
+          }
+          buf.write(')_');
+        }
+        buf.writeln();
+      }
+    }
+
+    if (failures.isNotEmpty) {
+      buf.writeln();
+      // GitHub allows <details> HTML elements
+      // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
+      buf.writeln('''
+<details>
+<summary>There were failures symbolizing some of the crashes I found</summary>
+''');
+
+      for (var entry in failures.entries) {
+        for (var result in entry.value) {
+          buf.writeln('''
+When processing ${comments[entry.key].url} I found crash
+
+```
+${result.crash}
+```
+
+but failed to symbolize it with the following notes:
+''');
+          for (var note in result.notes) {
+            buf.write('* ${noteMessage[note.kind]}');
+            if (note.message != null && note.message.isNotEmpty) {
+              if (note.message.contains('\n')) {
+                buf.writeln(':');
+                buf.write('''
+```
+${note.message}
+```'''
+                    .indentBy('    '));
+              } else {
+                buf.writeln(': `${note.message}`');
+              }
+            }
+            buf.writeln('');
+          }
+        }
+      }
+
+      buf.writeln('''
+
+See [my documentation](https://github.com/flutter-symbolizer-bot/flutter-symbolizer-bot/blob/main/README.md#commands) for more details.
+</details>
+''');
+    }
+
+    // Append information about symbolized comments to the bot's comment so that
+    // we could skip them later.
+    buf.writeln(
+        '<!-- ${jsonEncode({'symbolized': successes.keys.toList()})} -->');
+
+    if (dryRun) {
+      print(buf);
+    } else {
+      await github.issues.createComment(repo, issue.number, buf.toString());
+    }
+  }
+
+  /// Mail failures to the [failuresEmail] mail address.
+  void mailFailures(
+      RepositorySlug repo,
+      Issue issue,
+      Map<int, _Comment> comments,
+      Map<int, List<SymbolizationResult>> symbolized) async {
+    if (failuresEmail == null) {
+      return;
+    }
+
+    final failures = symbolized.whereResult((r) => r.symbolized == null);
+    if (failures.isEmpty) {
+      return;
+    }
+
+    final escape = const HtmlEscape().convert;
+
+    final buf = StringBuffer();
+    buf.write('''<p>Hello &#x1f44b;</p>
+<p>I was asked to symbolize crashes from <a href="${issue.htmlUrl}">issue ${issue.number}</a>, but failed.</p>
+''');
+    for (var entry in failures.entries) {
+      for (var result in entry.value) {
+        buf.writeln('''
+<p>When processing <a href="${comments[entry.key].url}">comment</a>, I found crash</p>
+<pre>${escape(result.crash.toString())}</pre>
+<p>but failed with the following notes:</p>
+''');
+        for (var note in result.notes) {
+          buf.writeln(
+              '${noteMessage[note.kind]} <pre>${escape(note.message ?? '')}');
+        }
+      }
+    }
+
+    if (dryRun) {
+      print(buf);
+    } else {
+      await mailer.send(
+        Email(
+          [
+            Personalization([Address(failuresEmail)])
+          ],
+          Address('noreply@dart.dev'),
+          'symbolization errors for issue #${issue.number}',
+          content: [Content('text/html', buf.toString())],
+        ),
+      );
+    }
+  }
+
+  static final _botInfoPattern = RegExp(r'<!-- (?<json>.*) -->');
+  static final _commentLinkPattern = RegExp(
+      r'^https://github\.com/(?<fullName>[\-\w]+/[\-\w]+)/issues/(?<issueNumber>\d+)#(?<ref>issue(comment)?-\d+)$');
+  static final _engineHashPattern = RegExp(r'^engine#(?<sha>[a-f0-9]+)$');
+  static final _flutterHashOrVersionPattern =
+      RegExp(r'^flutter#v?(?<version>[a-f0-9\.]+)$');
+}
+
+extension on BotCommand {
+  /// [true] if the user requested to process all comments on the issue.
+  bool get shouldProcessAll => !symbolizeThis && worklist.isEmpty;
+}
+
+/// Class that represents a comment on the issue.
+///
+/// GitHub API does not treat issue body itself as a comment hence
+/// the need for separate wrapper.
+class _Comment {
+  final int id;
+  final String url;
+  final String body;
+
+  _Comment(this.id, this.url, this.body);
+
+  _Comment.fromComment(IssueComment comment)
+      : this(comment.id, comment.htmlUrl, comment.body);
+
+  _Comment.fromIssue(Issue issue)
+      : this(issue.id, issue.commentLikeHtmlUrl, issue.body);
+}
+
+extension on Issue {
+  String get commentLikeHtmlUrl => '$htmlUrl#issue-$id';
+}
+
+extension on Map<int, List<SymbolizationResult>> {
+  /// Filter multimap of symbolization results using the given predicate.
+  Map<int, List<SymbolizationResult>> whereResult(
+          bool Function(SymbolizationResult) predicate) =>
+      Map.fromEntries(entries
+          .map((e) => MapEntry(e.key, e.value.where(predicate).toList()))
+          .where((e) => e.value.isNotEmpty));
+}
+
+extension on String {
+  String indentBy(String indent) => indent + split('\n').join('\n$indent');
+}
diff --git a/github-label-notifier/symbolizer/lib/config.dart b/github-label-notifier/symbolizer/lib/config.dart
new file mode 100644
index 0000000..a8acfe3
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/config.dart
@@ -0,0 +1,12 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:symbolizer/model.dart';
+
+ServerConfig loadConfigFromFile({String path = '.config.json'}) {
+  return ServerConfig.fromJson(jsonDecode(File(path).readAsStringSync()));
+}
diff --git a/github-label-notifier/symbolizer/lib/model.dart b/github-label-notifier/symbolizer/lib/model.dart
new file mode 100644
index 0000000..27d08ef
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/model.dart
@@ -0,0 +1,232 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Data model shared between client and server.
+library symbolizer.model;
+
+import 'package:freezed_annotation/freezed_annotation.dart';
+
+part 'model.freezed.dart';
+part 'model.g.dart';
+
+/// Specifies an engine variant (a combination of target os, CPU architecture
+/// and build mode).
+@freezed
+abstract class EngineVariant with _$EngineVariant {
+  factory EngineVariant({
+    @required String os,
+    @required @nullable String arch,
+    @required @nullable String mode,
+  }) = _EngineVariant;
+  factory EngineVariant.fromJson(Map<String, dynamic> json) =>
+      _$EngineVariantFromJson(json);
+
+  /// Generate all posibile variants from the given [variant] by varying
+  /// [EngineVariant.mode].
+  static Iterable<EngineVariant> allModesFor(EngineVariant variant) sync* {
+    for (var mode in [
+      'debug',
+      if (!_isX86Variant(variant)) 'release',
+      if (!_isX86Variant(variant)) 'profile'
+    ]) {
+      yield variant.copyWith(mode: mode);
+    }
+  }
+
+  static bool _isX86Variant(EngineVariant variant) =>
+      variant.arch == 'x86' || variant.arch == 'x64';
+}
+
+extension EngineVariantEx on EngineVariant {
+  String get pretty => '${os}-${arch}-${mode}';
+}
+
+/// Specific engine variant built at the given engine hash.
+@freezed
+abstract class EngineBuild with _$EngineBuild {
+  factory EngineBuild({
+    @required String engineHash,
+    @required EngineVariant variant,
+  }) = _EngineBuild;
+
+  factory EngineBuild.fromJson(Map<String, dynamic> json) =>
+      _$EngineBuildFromJson(json);
+}
+
+/// Backtrace frame extracted from a textual crash report.
+@freezed
+abstract class CrashFrame with _$CrashFrame {
+  /// Frame of a native iOS crash.
+  factory CrashFrame.ios({
+    @required String no,
+    @required String binary,
+
+    /// Absolute PC of the frame.
+    @required int pc,
+    @required String symbol,
+    @required @nullable int offset,
+    @required String location,
+  }) = IosCrashFrame;
+
+  /// Frame of a native Android crash.
+  factory CrashFrame.android({
+    @required String no,
+
+    /// Relative PC of the frame.
+    @required int pc,
+    @required String binary,
+    @required String rest,
+    @required @nullable String buildId,
+  }) = AndroidCrashFrame;
+
+  factory CrashFrame.custom({
+    @required String no,
+    @required int pc,
+    @required String binary,
+    @required @nullable int offset,
+    @required @nullable String location,
+    @required @nullable String symbol,
+  }) = CustomCrashFrame;
+
+  /// Frame of a Dart VM crash.
+  factory CrashFrame.dartvm({
+    /// Absolute PC of the frame.
+    @required int pc,
+
+    /// Binary which contains the given PC.
+    @required String binary,
+
+    /// Offset from load base of the binary to the PC.
+    @required int offset,
+  }) = DartvmCrashFrame;
+
+  factory CrashFrame.fromJson(Map<String, dynamic> json) =>
+      _$CrashFrameFromJson(json);
+
+  static const crashalyticsMissingSymbol = '(Missing)';
+}
+
+/// Information about an engine crash extracted from a GitHub comment.
+@freezed
+abstract class Crash with _$Crash {
+  factory Crash({
+    EngineVariant engineVariant,
+    List<CrashFrame> frames,
+    @required String format,
+    @nullable int androidMajorVersion,
+  }) = _Crash;
+
+  factory Crash.fromJson(Map<String, dynamic> json) => _$CrashFromJson(json);
+}
+
+enum SymbolizationNoteKind {
+  unknownEngineHash,
+  unknownAbi,
+  exceptionWhileGettingEngineHash,
+  exceptionWhileSymbolizing,
+  exceptionWhileLookingByBuildId,
+  defaultedToReleaseBuildIdUnavailable,
+  noSymbolsAvailableOnIos,
+  buildIdMismatch,
+  loadBaseDetected,
+}
+
+const noteMessage = <SymbolizationNoteKind, String>{
+  SymbolizationNoteKind.unknownEngineHash: 'Unknown engine hash',
+  SymbolizationNoteKind.unknownAbi: 'Unknown engine ABI',
+  SymbolizationNoteKind.exceptionWhileGettingEngineHash:
+      'Exception occurred while trying to lookup full engine hash',
+  SymbolizationNoteKind.exceptionWhileSymbolizing:
+      'Exception occurred while symbolizing',
+  SymbolizationNoteKind.exceptionWhileLookingByBuildId:
+      'Exception occurred while trying to find symbols using build-id',
+  SymbolizationNoteKind.defaultedToReleaseBuildIdUnavailable:
+      'Defaulted to release engine because build-id is unavailable or unreliable',
+  SymbolizationNoteKind.noSymbolsAvailableOnIos:
+      'Symbols are available only for release iOS builds',
+  SymbolizationNoteKind.buildIdMismatch: 'Build-ID mismatch',
+  SymbolizationNoteKind.loadBaseDetected:
+      'Load address missing from the report, detected heuristically',
+};
+
+/// Result of symbolizing an engine crash.
+@freezed
+abstract class SymbolizationResult with _$SymbolizationResult {
+  @JsonSerializable(explicitToJson: true)
+  factory SymbolizationResult({
+    @required Crash crash,
+    @required @nullable EngineBuild engineBuild,
+
+    /// Symbolization result - not null if symbolization succeeded.
+    @required @nullable String symbolized,
+    @Default([]) List<SymbolizationNote> notes,
+  }) = _SymbolizationResult;
+
+  factory SymbolizationResult.fromJson(Map<String, dynamic> json) =>
+      _$SymbolizationResultFromJson(json);
+}
+
+extension WithNote on SymbolizationResult {
+  SymbolizationResult withNote(SymbolizationNoteKind kind, [String message]) {
+    return copyWith(
+      notes: [
+        ...?notes,
+        SymbolizationNote(kind: kind, message: message),
+      ],
+    );
+  }
+}
+
+@freezed
+abstract class SymbolizationNote with _$SymbolizationNote {
+  factory SymbolizationNote(
+      {@required SymbolizationNoteKind kind,
+      @nullable String message}) = _SymbolizationNote;
+
+  factory SymbolizationNote.fromJson(Map<String, dynamic> json) =>
+      _$SymbolizationNoteFromJson(json);
+}
+
+/// Command to [Bot].
+@freezed
+abstract class BotCommand with _$BotCommand {
+  factory BotCommand({
+    /// Overrides that should be used for symbolization. These overrides
+    /// replace or augment information available in the comments themselves.
+    @required SymbolizationOverrides overrides,
+
+    /// [true] if the user requested to symbolize the comment that contains
+    /// command.
+    @required bool symbolizeThis,
+
+    /// List of references to comments which need to be symbolized. Each reference
+    /// is either in `issue-id` or in `issuecomment-id` format.
+    @required Set<String> worklist,
+  }) = _BotCommand;
+}
+
+@freezed
+abstract class SymbolizationOverrides with _$SymbolizationOverrides {
+  factory SymbolizationOverrides({
+    @nullable String engineHash,
+    @nullable String flutterVersion,
+    @nullable String arch,
+    @nullable String mode,
+    @Default(false) bool force,
+    @nullable String format,
+    @nullable String os,
+  }) = _SymbolizationOverrides;
+}
+
+@freezed
+abstract class ServerConfig with _$ServerConfig {
+  factory ServerConfig({
+    String githubToken,
+    String sendgridToken,
+    String failureEmail,
+  }) = _ServerConfig;
+
+  factory ServerConfig.fromJson(Map<String, dynamic> json) =>
+      _$ServerConfigFromJson(json);
+}
diff --git a/github-label-notifier/symbolizer/lib/model.freezed.dart b/github-label-notifier/symbolizer/lib/model.freezed.dart
new file mode 100644
index 0000000..973e42b
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/model.freezed.dart
@@ -0,0 +1,2690 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+// ignore_for_file: deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies
+
+part of symbolizer.model;
+
+// **************************************************************************
+// FreezedGenerator
+// **************************************************************************
+
+T _$identity<T>(T value) => value;
+EngineVariant _$EngineVariantFromJson(Map<String, dynamic> json) {
+  return _EngineVariant.fromJson(json);
+}
+
+/// @nodoc
+class _$EngineVariantTearOff {
+  const _$EngineVariantTearOff();
+
+// ignore: unused_element
+  _EngineVariant call(
+      {@required String os,
+      @required @nullable String arch,
+      @required @nullable String mode}) {
+    return _EngineVariant(
+      os: os,
+      arch: arch,
+      mode: mode,
+    );
+  }
+
+// ignore: unused_element
+  EngineVariant fromJson(Map<String, Object> json) {
+    return EngineVariant.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $EngineVariant = _$EngineVariantTearOff();
+
+/// @nodoc
+mixin _$EngineVariant {
+  String get os;
+  @nullable
+  String get arch;
+  @nullable
+  String get mode;
+
+  Map<String, dynamic> toJson();
+  $EngineVariantCopyWith<EngineVariant> get copyWith;
+}
+
+/// @nodoc
+abstract class $EngineVariantCopyWith<$Res> {
+  factory $EngineVariantCopyWith(
+          EngineVariant value, $Res Function(EngineVariant) then) =
+      _$EngineVariantCopyWithImpl<$Res>;
+  $Res call({String os, @nullable String arch, @nullable String mode});
+}
+
+/// @nodoc
+class _$EngineVariantCopyWithImpl<$Res>
+    implements $EngineVariantCopyWith<$Res> {
+  _$EngineVariantCopyWithImpl(this._value, this._then);
+
+  final EngineVariant _value;
+  // ignore: unused_field
+  final $Res Function(EngineVariant) _then;
+
+  @override
+  $Res call({
+    Object os = freezed,
+    Object arch = freezed,
+    Object mode = freezed,
+  }) {
+    return _then(_value.copyWith(
+      os: os == freezed ? _value.os : os as String,
+      arch: arch == freezed ? _value.arch : arch as String,
+      mode: mode == freezed ? _value.mode : mode as String,
+    ));
+  }
+}
+
+/// @nodoc
+abstract class _$EngineVariantCopyWith<$Res>
+    implements $EngineVariantCopyWith<$Res> {
+  factory _$EngineVariantCopyWith(
+          _EngineVariant value, $Res Function(_EngineVariant) then) =
+      __$EngineVariantCopyWithImpl<$Res>;
+  @override
+  $Res call({String os, @nullable String arch, @nullable String mode});
+}
+
+/// @nodoc
+class __$EngineVariantCopyWithImpl<$Res>
+    extends _$EngineVariantCopyWithImpl<$Res>
+    implements _$EngineVariantCopyWith<$Res> {
+  __$EngineVariantCopyWithImpl(
+      _EngineVariant _value, $Res Function(_EngineVariant) _then)
+      : super(_value, (v) => _then(v as _EngineVariant));
+
+  @override
+  _EngineVariant get _value => super._value as _EngineVariant;
+
+  @override
+  $Res call({
+    Object os = freezed,
+    Object arch = freezed,
+    Object mode = freezed,
+  }) {
+    return _then(_EngineVariant(
+      os: os == freezed ? _value.os : os as String,
+      arch: arch == freezed ? _value.arch : arch as String,
+      mode: mode == freezed ? _value.mode : mode as String,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$_EngineVariant implements _EngineVariant {
+  _$_EngineVariant(
+      {@required this.os,
+      @required @nullable this.arch,
+      @required @nullable this.mode})
+      : assert(os != null);
+
+  factory _$_EngineVariant.fromJson(Map<String, dynamic> json) =>
+      _$_$_EngineVariantFromJson(json);
+
+  @override
+  final String os;
+  @override
+  @nullable
+  final String arch;
+  @override
+  @nullable
+  final String mode;
+
+  @override
+  String toString() {
+    return 'EngineVariant(os: $os, arch: $arch, mode: $mode)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _EngineVariant &&
+            (identical(other.os, os) ||
+                const DeepCollectionEquality().equals(other.os, os)) &&
+            (identical(other.arch, arch) ||
+                const DeepCollectionEquality().equals(other.arch, arch)) &&
+            (identical(other.mode, mode) ||
+                const DeepCollectionEquality().equals(other.mode, mode)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(os) ^
+      const DeepCollectionEquality().hash(arch) ^
+      const DeepCollectionEquality().hash(mode);
+
+  @override
+  _$EngineVariantCopyWith<_EngineVariant> get copyWith =>
+      __$EngineVariantCopyWithImpl<_EngineVariant>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$_EngineVariantToJson(this);
+  }
+}
+
+abstract class _EngineVariant implements EngineVariant {
+  factory _EngineVariant(
+      {@required String os,
+      @required @nullable String arch,
+      @required @nullable String mode}) = _$_EngineVariant;
+
+  factory _EngineVariant.fromJson(Map<String, dynamic> json) =
+      _$_EngineVariant.fromJson;
+
+  @override
+  String get os;
+  @override
+  @nullable
+  String get arch;
+  @override
+  @nullable
+  String get mode;
+  @override
+  _$EngineVariantCopyWith<_EngineVariant> get copyWith;
+}
+
+EngineBuild _$EngineBuildFromJson(Map<String, dynamic> json) {
+  return _EngineBuild.fromJson(json);
+}
+
+/// @nodoc
+class _$EngineBuildTearOff {
+  const _$EngineBuildTearOff();
+
+// ignore: unused_element
+  _EngineBuild call(
+      {@required String engineHash, @required EngineVariant variant}) {
+    return _EngineBuild(
+      engineHash: engineHash,
+      variant: variant,
+    );
+  }
+
+// ignore: unused_element
+  EngineBuild fromJson(Map<String, Object> json) {
+    return EngineBuild.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $EngineBuild = _$EngineBuildTearOff();
+
+/// @nodoc
+mixin _$EngineBuild {
+  String get engineHash;
+  EngineVariant get variant;
+
+  Map<String, dynamic> toJson();
+  $EngineBuildCopyWith<EngineBuild> get copyWith;
+}
+
+/// @nodoc
+abstract class $EngineBuildCopyWith<$Res> {
+  factory $EngineBuildCopyWith(
+          EngineBuild value, $Res Function(EngineBuild) then) =
+      _$EngineBuildCopyWithImpl<$Res>;
+  $Res call({String engineHash, EngineVariant variant});
+
+  $EngineVariantCopyWith<$Res> get variant;
+}
+
+/// @nodoc
+class _$EngineBuildCopyWithImpl<$Res> implements $EngineBuildCopyWith<$Res> {
+  _$EngineBuildCopyWithImpl(this._value, this._then);
+
+  final EngineBuild _value;
+  // ignore: unused_field
+  final $Res Function(EngineBuild) _then;
+
+  @override
+  $Res call({
+    Object engineHash = freezed,
+    Object variant = freezed,
+  }) {
+    return _then(_value.copyWith(
+      engineHash:
+          engineHash == freezed ? _value.engineHash : engineHash as String,
+      variant: variant == freezed ? _value.variant : variant as EngineVariant,
+    ));
+  }
+
+  @override
+  $EngineVariantCopyWith<$Res> get variant {
+    if (_value.variant == null) {
+      return null;
+    }
+    return $EngineVariantCopyWith<$Res>(_value.variant, (value) {
+      return _then(_value.copyWith(variant: value));
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$EngineBuildCopyWith<$Res>
+    implements $EngineBuildCopyWith<$Res> {
+  factory _$EngineBuildCopyWith(
+          _EngineBuild value, $Res Function(_EngineBuild) then) =
+      __$EngineBuildCopyWithImpl<$Res>;
+  @override
+  $Res call({String engineHash, EngineVariant variant});
+
+  @override
+  $EngineVariantCopyWith<$Res> get variant;
+}
+
+/// @nodoc
+class __$EngineBuildCopyWithImpl<$Res> extends _$EngineBuildCopyWithImpl<$Res>
+    implements _$EngineBuildCopyWith<$Res> {
+  __$EngineBuildCopyWithImpl(
+      _EngineBuild _value, $Res Function(_EngineBuild) _then)
+      : super(_value, (v) => _then(v as _EngineBuild));
+
+  @override
+  _EngineBuild get _value => super._value as _EngineBuild;
+
+  @override
+  $Res call({
+    Object engineHash = freezed,
+    Object variant = freezed,
+  }) {
+    return _then(_EngineBuild(
+      engineHash:
+          engineHash == freezed ? _value.engineHash : engineHash as String,
+      variant: variant == freezed ? _value.variant : variant as EngineVariant,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$_EngineBuild implements _EngineBuild {
+  _$_EngineBuild({@required this.engineHash, @required this.variant})
+      : assert(engineHash != null),
+        assert(variant != null);
+
+  factory _$_EngineBuild.fromJson(Map<String, dynamic> json) =>
+      _$_$_EngineBuildFromJson(json);
+
+  @override
+  final String engineHash;
+  @override
+  final EngineVariant variant;
+
+  @override
+  String toString() {
+    return 'EngineBuild(engineHash: $engineHash, variant: $variant)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _EngineBuild &&
+            (identical(other.engineHash, engineHash) ||
+                const DeepCollectionEquality()
+                    .equals(other.engineHash, engineHash)) &&
+            (identical(other.variant, variant) ||
+                const DeepCollectionEquality().equals(other.variant, variant)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(engineHash) ^
+      const DeepCollectionEquality().hash(variant);
+
+  @override
+  _$EngineBuildCopyWith<_EngineBuild> get copyWith =>
+      __$EngineBuildCopyWithImpl<_EngineBuild>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$_EngineBuildToJson(this);
+  }
+}
+
+abstract class _EngineBuild implements EngineBuild {
+  factory _EngineBuild(
+      {@required String engineHash,
+      @required EngineVariant variant}) = _$_EngineBuild;
+
+  factory _EngineBuild.fromJson(Map<String, dynamic> json) =
+      _$_EngineBuild.fromJson;
+
+  @override
+  String get engineHash;
+  @override
+  EngineVariant get variant;
+  @override
+  _$EngineBuildCopyWith<_EngineBuild> get copyWith;
+}
+
+CrashFrame _$CrashFrameFromJson(Map<String, dynamic> json) {
+  switch (json['runtimeType'] as String) {
+    case 'ios':
+      return IosCrashFrame.fromJson(json);
+    case 'android':
+      return AndroidCrashFrame.fromJson(json);
+    case 'custom':
+      return CustomCrashFrame.fromJson(json);
+    case 'dartvm':
+      return DartvmCrashFrame.fromJson(json);
+
+    default:
+      throw FallThroughError();
+  }
+}
+
+/// @nodoc
+class _$CrashFrameTearOff {
+  const _$CrashFrameTearOff();
+
+// ignore: unused_element
+  IosCrashFrame ios(
+      {@required String no,
+      @required String binary,
+      @required int pc,
+      @required String symbol,
+      @required @nullable int offset,
+      @required String location}) {
+    return IosCrashFrame(
+      no: no,
+      binary: binary,
+      pc: pc,
+      symbol: symbol,
+      offset: offset,
+      location: location,
+    );
+  }
+
+// ignore: unused_element
+  AndroidCrashFrame android(
+      {@required String no,
+      @required int pc,
+      @required String binary,
+      @required String rest,
+      @required @nullable String buildId}) {
+    return AndroidCrashFrame(
+      no: no,
+      pc: pc,
+      binary: binary,
+      rest: rest,
+      buildId: buildId,
+    );
+  }
+
+// ignore: unused_element
+  CustomCrashFrame custom(
+      {@required String no,
+      @required int pc,
+      @required String binary,
+      @required @nullable int offset,
+      @required @nullable String location,
+      @required @nullable String symbol}) {
+    return CustomCrashFrame(
+      no: no,
+      pc: pc,
+      binary: binary,
+      offset: offset,
+      location: location,
+      symbol: symbol,
+    );
+  }
+
+// ignore: unused_element
+  DartvmCrashFrame dartvm(
+      {@required int pc, @required String binary, @required int offset}) {
+    return DartvmCrashFrame(
+      pc: pc,
+      binary: binary,
+      offset: offset,
+    );
+  }
+
+// ignore: unused_element
+  CrashFrame fromJson(Map<String, Object> json) {
+    return CrashFrame.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $CrashFrame = _$CrashFrameTearOff();
+
+/// @nodoc
+mixin _$CrashFrame {
+  String get binary;
+
+  /// Absolute PC of the frame.
+  int get pc;
+
+  @optionalTypeArgs
+  Result when<Result extends Object>({
+    @required
+        Result ios(String no, String binary, int pc, String symbol,
+            @nullable int offset, String location),
+    @required
+        Result android(String no, int pc, String binary, String rest,
+            @nullable String buildId),
+    @required
+        Result custom(String no, int pc, String binary, @nullable int offset,
+            @nullable String location, @nullable String symbol),
+    @required Result dartvm(int pc, String binary, int offset),
+  });
+  @optionalTypeArgs
+  Result maybeWhen<Result extends Object>({
+    Result ios(String no, String binary, int pc, String symbol,
+        @nullable int offset, String location),
+    Result android(String no, int pc, String binary, String rest,
+        @nullable String buildId),
+    Result custom(String no, int pc, String binary, @nullable int offset,
+        @nullable String location, @nullable String symbol),
+    Result dartvm(int pc, String binary, int offset),
+    @required Result orElse(),
+  });
+  @optionalTypeArgs
+  Result map<Result extends Object>({
+    @required Result ios(IosCrashFrame value),
+    @required Result android(AndroidCrashFrame value),
+    @required Result custom(CustomCrashFrame value),
+    @required Result dartvm(DartvmCrashFrame value),
+  });
+  @optionalTypeArgs
+  Result maybeMap<Result extends Object>({
+    Result ios(IosCrashFrame value),
+    Result android(AndroidCrashFrame value),
+    Result custom(CustomCrashFrame value),
+    Result dartvm(DartvmCrashFrame value),
+    @required Result orElse(),
+  });
+  Map<String, dynamic> toJson();
+  $CrashFrameCopyWith<CrashFrame> get copyWith;
+}
+
+/// @nodoc
+abstract class $CrashFrameCopyWith<$Res> {
+  factory $CrashFrameCopyWith(
+          CrashFrame value, $Res Function(CrashFrame) then) =
+      _$CrashFrameCopyWithImpl<$Res>;
+  $Res call({String binary, int pc});
+}
+
+/// @nodoc
+class _$CrashFrameCopyWithImpl<$Res> implements $CrashFrameCopyWith<$Res> {
+  _$CrashFrameCopyWithImpl(this._value, this._then);
+
+  final CrashFrame _value;
+  // ignore: unused_field
+  final $Res Function(CrashFrame) _then;
+
+  @override
+  $Res call({
+    Object binary = freezed,
+    Object pc = freezed,
+  }) {
+    return _then(_value.copyWith(
+      binary: binary == freezed ? _value.binary : binary as String,
+      pc: pc == freezed ? _value.pc : pc as int,
+    ));
+  }
+}
+
+/// @nodoc
+abstract class $IosCrashFrameCopyWith<$Res>
+    implements $CrashFrameCopyWith<$Res> {
+  factory $IosCrashFrameCopyWith(
+          IosCrashFrame value, $Res Function(IosCrashFrame) then) =
+      _$IosCrashFrameCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {String no,
+      String binary,
+      int pc,
+      String symbol,
+      @nullable int offset,
+      String location});
+}
+
+/// @nodoc
+class _$IosCrashFrameCopyWithImpl<$Res> extends _$CrashFrameCopyWithImpl<$Res>
+    implements $IosCrashFrameCopyWith<$Res> {
+  _$IosCrashFrameCopyWithImpl(
+      IosCrashFrame _value, $Res Function(IosCrashFrame) _then)
+      : super(_value, (v) => _then(v as IosCrashFrame));
+
+  @override
+  IosCrashFrame get _value => super._value as IosCrashFrame;
+
+  @override
+  $Res call({
+    Object no = freezed,
+    Object binary = freezed,
+    Object pc = freezed,
+    Object symbol = freezed,
+    Object offset = freezed,
+    Object location = freezed,
+  }) {
+    return _then(IosCrashFrame(
+      no: no == freezed ? _value.no : no as String,
+      binary: binary == freezed ? _value.binary : binary as String,
+      pc: pc == freezed ? _value.pc : pc as int,
+      symbol: symbol == freezed ? _value.symbol : symbol as String,
+      offset: offset == freezed ? _value.offset : offset as int,
+      location: location == freezed ? _value.location : location as String,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$IosCrashFrame implements IosCrashFrame {
+  _$IosCrashFrame(
+      {@required this.no,
+      @required this.binary,
+      @required this.pc,
+      @required this.symbol,
+      @required @nullable this.offset,
+      @required this.location})
+      : assert(no != null),
+        assert(binary != null),
+        assert(pc != null),
+        assert(symbol != null),
+        assert(location != null);
+
+  factory _$IosCrashFrame.fromJson(Map<String, dynamic> json) =>
+      _$_$IosCrashFrameFromJson(json);
+
+  @override
+  final String no;
+  @override
+  final String binary;
+  @override
+
+  /// Absolute PC of the frame.
+  final int pc;
+  @override
+  final String symbol;
+  @override
+  @nullable
+  final int offset;
+  @override
+  final String location;
+
+  @override
+  String toString() {
+    return 'CrashFrame.ios(no: $no, binary: $binary, pc: $pc, symbol: $symbol, offset: $offset, location: $location)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is IosCrashFrame &&
+            (identical(other.no, no) ||
+                const DeepCollectionEquality().equals(other.no, no)) &&
+            (identical(other.binary, binary) ||
+                const DeepCollectionEquality().equals(other.binary, binary)) &&
+            (identical(other.pc, pc) ||
+                const DeepCollectionEquality().equals(other.pc, pc)) &&
+            (identical(other.symbol, symbol) ||
+                const DeepCollectionEquality().equals(other.symbol, symbol)) &&
+            (identical(other.offset, offset) ||
+                const DeepCollectionEquality().equals(other.offset, offset)) &&
+            (identical(other.location, location) ||
+                const DeepCollectionEquality()
+                    .equals(other.location, location)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(no) ^
+      const DeepCollectionEquality().hash(binary) ^
+      const DeepCollectionEquality().hash(pc) ^
+      const DeepCollectionEquality().hash(symbol) ^
+      const DeepCollectionEquality().hash(offset) ^
+      const DeepCollectionEquality().hash(location);
+
+  @override
+  $IosCrashFrameCopyWith<IosCrashFrame> get copyWith =>
+      _$IosCrashFrameCopyWithImpl<IosCrashFrame>(this, _$identity);
+
+  @override
+  @optionalTypeArgs
+  Result when<Result extends Object>({
+    @required
+        Result ios(String no, String binary, int pc, String symbol,
+            @nullable int offset, String location),
+    @required
+        Result android(String no, int pc, String binary, String rest,
+            @nullable String buildId),
+    @required
+        Result custom(String no, int pc, String binary, @nullable int offset,
+            @nullable String location, @nullable String symbol),
+    @required Result dartvm(int pc, String binary, int offset),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return ios(no, binary, pc, symbol, offset, location);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeWhen<Result extends Object>({
+    Result ios(String no, String binary, int pc, String symbol,
+        @nullable int offset, String location),
+    Result android(String no, int pc, String binary, String rest,
+        @nullable String buildId),
+    Result custom(String no, int pc, String binary, @nullable int offset,
+        @nullable String location, @nullable String symbol),
+    Result dartvm(int pc, String binary, int offset),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (ios != null) {
+      return ios(no, binary, pc, symbol, offset, location);
+    }
+    return orElse();
+  }
+
+  @override
+  @optionalTypeArgs
+  Result map<Result extends Object>({
+    @required Result ios(IosCrashFrame value),
+    @required Result android(AndroidCrashFrame value),
+    @required Result custom(CustomCrashFrame value),
+    @required Result dartvm(DartvmCrashFrame value),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return ios(this);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeMap<Result extends Object>({
+    Result ios(IosCrashFrame value),
+    Result android(AndroidCrashFrame value),
+    Result custom(CustomCrashFrame value),
+    Result dartvm(DartvmCrashFrame value),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (ios != null) {
+      return ios(this);
+    }
+    return orElse();
+  }
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$IosCrashFrameToJson(this)..['runtimeType'] = 'ios';
+  }
+}
+
+abstract class IosCrashFrame implements CrashFrame {
+  factory IosCrashFrame(
+      {@required String no,
+      @required String binary,
+      @required int pc,
+      @required String symbol,
+      @required @nullable int offset,
+      @required String location}) = _$IosCrashFrame;
+
+  factory IosCrashFrame.fromJson(Map<String, dynamic> json) =
+      _$IosCrashFrame.fromJson;
+
+  String get no;
+  @override
+  String get binary;
+  @override
+
+  /// Absolute PC of the frame.
+  int get pc;
+  String get symbol;
+  @nullable
+  int get offset;
+  String get location;
+  @override
+  $IosCrashFrameCopyWith<IosCrashFrame> get copyWith;
+}
+
+/// @nodoc
+abstract class $AndroidCrashFrameCopyWith<$Res>
+    implements $CrashFrameCopyWith<$Res> {
+  factory $AndroidCrashFrameCopyWith(
+          AndroidCrashFrame value, $Res Function(AndroidCrashFrame) then) =
+      _$AndroidCrashFrameCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {String no,
+      int pc,
+      String binary,
+      String rest,
+      @nullable String buildId});
+}
+
+/// @nodoc
+class _$AndroidCrashFrameCopyWithImpl<$Res>
+    extends _$CrashFrameCopyWithImpl<$Res>
+    implements $AndroidCrashFrameCopyWith<$Res> {
+  _$AndroidCrashFrameCopyWithImpl(
+      AndroidCrashFrame _value, $Res Function(AndroidCrashFrame) _then)
+      : super(_value, (v) => _then(v as AndroidCrashFrame));
+
+  @override
+  AndroidCrashFrame get _value => super._value as AndroidCrashFrame;
+
+  @override
+  $Res call({
+    Object no = freezed,
+    Object pc = freezed,
+    Object binary = freezed,
+    Object rest = freezed,
+    Object buildId = freezed,
+  }) {
+    return _then(AndroidCrashFrame(
+      no: no == freezed ? _value.no : no as String,
+      pc: pc == freezed ? _value.pc : pc as int,
+      binary: binary == freezed ? _value.binary : binary as String,
+      rest: rest == freezed ? _value.rest : rest as String,
+      buildId: buildId == freezed ? _value.buildId : buildId as String,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$AndroidCrashFrame implements AndroidCrashFrame {
+  _$AndroidCrashFrame(
+      {@required this.no,
+      @required this.pc,
+      @required this.binary,
+      @required this.rest,
+      @required @nullable this.buildId})
+      : assert(no != null),
+        assert(pc != null),
+        assert(binary != null),
+        assert(rest != null);
+
+  factory _$AndroidCrashFrame.fromJson(Map<String, dynamic> json) =>
+      _$_$AndroidCrashFrameFromJson(json);
+
+  @override
+  final String no;
+  @override
+
+  /// Relative PC of the frame.
+  final int pc;
+  @override
+  final String binary;
+  @override
+  final String rest;
+  @override
+  @nullable
+  final String buildId;
+
+  @override
+  String toString() {
+    return 'CrashFrame.android(no: $no, pc: $pc, binary: $binary, rest: $rest, buildId: $buildId)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is AndroidCrashFrame &&
+            (identical(other.no, no) ||
+                const DeepCollectionEquality().equals(other.no, no)) &&
+            (identical(other.pc, pc) ||
+                const DeepCollectionEquality().equals(other.pc, pc)) &&
+            (identical(other.binary, binary) ||
+                const DeepCollectionEquality().equals(other.binary, binary)) &&
+            (identical(other.rest, rest) ||
+                const DeepCollectionEquality().equals(other.rest, rest)) &&
+            (identical(other.buildId, buildId) ||
+                const DeepCollectionEquality().equals(other.buildId, buildId)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(no) ^
+      const DeepCollectionEquality().hash(pc) ^
+      const DeepCollectionEquality().hash(binary) ^
+      const DeepCollectionEquality().hash(rest) ^
+      const DeepCollectionEquality().hash(buildId);
+
+  @override
+  $AndroidCrashFrameCopyWith<AndroidCrashFrame> get copyWith =>
+      _$AndroidCrashFrameCopyWithImpl<AndroidCrashFrame>(this, _$identity);
+
+  @override
+  @optionalTypeArgs
+  Result when<Result extends Object>({
+    @required
+        Result ios(String no, String binary, int pc, String symbol,
+            @nullable int offset, String location),
+    @required
+        Result android(String no, int pc, String binary, String rest,
+            @nullable String buildId),
+    @required
+        Result custom(String no, int pc, String binary, @nullable int offset,
+            @nullable String location, @nullable String symbol),
+    @required Result dartvm(int pc, String binary, int offset),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return android(no, pc, binary, rest, buildId);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeWhen<Result extends Object>({
+    Result ios(String no, String binary, int pc, String symbol,
+        @nullable int offset, String location),
+    Result android(String no, int pc, String binary, String rest,
+        @nullable String buildId),
+    Result custom(String no, int pc, String binary, @nullable int offset,
+        @nullable String location, @nullable String symbol),
+    Result dartvm(int pc, String binary, int offset),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (android != null) {
+      return android(no, pc, binary, rest, buildId);
+    }
+    return orElse();
+  }
+
+  @override
+  @optionalTypeArgs
+  Result map<Result extends Object>({
+    @required Result ios(IosCrashFrame value),
+    @required Result android(AndroidCrashFrame value),
+    @required Result custom(CustomCrashFrame value),
+    @required Result dartvm(DartvmCrashFrame value),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return android(this);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeMap<Result extends Object>({
+    Result ios(IosCrashFrame value),
+    Result android(AndroidCrashFrame value),
+    Result custom(CustomCrashFrame value),
+    Result dartvm(DartvmCrashFrame value),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (android != null) {
+      return android(this);
+    }
+    return orElse();
+  }
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$AndroidCrashFrameToJson(this)..['runtimeType'] = 'android';
+  }
+}
+
+abstract class AndroidCrashFrame implements CrashFrame {
+  factory AndroidCrashFrame(
+      {@required String no,
+      @required int pc,
+      @required String binary,
+      @required String rest,
+      @required @nullable String buildId}) = _$AndroidCrashFrame;
+
+  factory AndroidCrashFrame.fromJson(Map<String, dynamic> json) =
+      _$AndroidCrashFrame.fromJson;
+
+  String get no;
+  @override
+
+  /// Relative PC of the frame.
+  int get pc;
+  @override
+  String get binary;
+  String get rest;
+  @nullable
+  String get buildId;
+  @override
+  $AndroidCrashFrameCopyWith<AndroidCrashFrame> get copyWith;
+}
+
+/// @nodoc
+abstract class $CustomCrashFrameCopyWith<$Res>
+    implements $CrashFrameCopyWith<$Res> {
+  factory $CustomCrashFrameCopyWith(
+          CustomCrashFrame value, $Res Function(CustomCrashFrame) then) =
+      _$CustomCrashFrameCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {String no,
+      int pc,
+      String binary,
+      @nullable int offset,
+      @nullable String location,
+      @nullable String symbol});
+}
+
+/// @nodoc
+class _$CustomCrashFrameCopyWithImpl<$Res>
+    extends _$CrashFrameCopyWithImpl<$Res>
+    implements $CustomCrashFrameCopyWith<$Res> {
+  _$CustomCrashFrameCopyWithImpl(
+      CustomCrashFrame _value, $Res Function(CustomCrashFrame) _then)
+      : super(_value, (v) => _then(v as CustomCrashFrame));
+
+  @override
+  CustomCrashFrame get _value => super._value as CustomCrashFrame;
+
+  @override
+  $Res call({
+    Object no = freezed,
+    Object pc = freezed,
+    Object binary = freezed,
+    Object offset = freezed,
+    Object location = freezed,
+    Object symbol = freezed,
+  }) {
+    return _then(CustomCrashFrame(
+      no: no == freezed ? _value.no : no as String,
+      pc: pc == freezed ? _value.pc : pc as int,
+      binary: binary == freezed ? _value.binary : binary as String,
+      offset: offset == freezed ? _value.offset : offset as int,
+      location: location == freezed ? _value.location : location as String,
+      symbol: symbol == freezed ? _value.symbol : symbol as String,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$CustomCrashFrame implements CustomCrashFrame {
+  _$CustomCrashFrame(
+      {@required this.no,
+      @required this.pc,
+      @required this.binary,
+      @required @nullable this.offset,
+      @required @nullable this.location,
+      @required @nullable this.symbol})
+      : assert(no != null),
+        assert(pc != null),
+        assert(binary != null);
+
+  factory _$CustomCrashFrame.fromJson(Map<String, dynamic> json) =>
+      _$_$CustomCrashFrameFromJson(json);
+
+  @override
+  final String no;
+  @override
+  final int pc;
+  @override
+  final String binary;
+  @override
+  @nullable
+  final int offset;
+  @override
+  @nullable
+  final String location;
+  @override
+  @nullable
+  final String symbol;
+
+  @override
+  String toString() {
+    return 'CrashFrame.custom(no: $no, pc: $pc, binary: $binary, offset: $offset, location: $location, symbol: $symbol)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is CustomCrashFrame &&
+            (identical(other.no, no) ||
+                const DeepCollectionEquality().equals(other.no, no)) &&
+            (identical(other.pc, pc) ||
+                const DeepCollectionEquality().equals(other.pc, pc)) &&
+            (identical(other.binary, binary) ||
+                const DeepCollectionEquality().equals(other.binary, binary)) &&
+            (identical(other.offset, offset) ||
+                const DeepCollectionEquality().equals(other.offset, offset)) &&
+            (identical(other.location, location) ||
+                const DeepCollectionEquality()
+                    .equals(other.location, location)) &&
+            (identical(other.symbol, symbol) ||
+                const DeepCollectionEquality().equals(other.symbol, symbol)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(no) ^
+      const DeepCollectionEquality().hash(pc) ^
+      const DeepCollectionEquality().hash(binary) ^
+      const DeepCollectionEquality().hash(offset) ^
+      const DeepCollectionEquality().hash(location) ^
+      const DeepCollectionEquality().hash(symbol);
+
+  @override
+  $CustomCrashFrameCopyWith<CustomCrashFrame> get copyWith =>
+      _$CustomCrashFrameCopyWithImpl<CustomCrashFrame>(this, _$identity);
+
+  @override
+  @optionalTypeArgs
+  Result when<Result extends Object>({
+    @required
+        Result ios(String no, String binary, int pc, String symbol,
+            @nullable int offset, String location),
+    @required
+        Result android(String no, int pc, String binary, String rest,
+            @nullable String buildId),
+    @required
+        Result custom(String no, int pc, String binary, @nullable int offset,
+            @nullable String location, @nullable String symbol),
+    @required Result dartvm(int pc, String binary, int offset),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return custom(no, pc, binary, offset, location, symbol);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeWhen<Result extends Object>({
+    Result ios(String no, String binary, int pc, String symbol,
+        @nullable int offset, String location),
+    Result android(String no, int pc, String binary, String rest,
+        @nullable String buildId),
+    Result custom(String no, int pc, String binary, @nullable int offset,
+        @nullable String location, @nullable String symbol),
+    Result dartvm(int pc, String binary, int offset),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (custom != null) {
+      return custom(no, pc, binary, offset, location, symbol);
+    }
+    return orElse();
+  }
+
+  @override
+  @optionalTypeArgs
+  Result map<Result extends Object>({
+    @required Result ios(IosCrashFrame value),
+    @required Result android(AndroidCrashFrame value),
+    @required Result custom(CustomCrashFrame value),
+    @required Result dartvm(DartvmCrashFrame value),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return custom(this);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeMap<Result extends Object>({
+    Result ios(IosCrashFrame value),
+    Result android(AndroidCrashFrame value),
+    Result custom(CustomCrashFrame value),
+    Result dartvm(DartvmCrashFrame value),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (custom != null) {
+      return custom(this);
+    }
+    return orElse();
+  }
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$CustomCrashFrameToJson(this)..['runtimeType'] = 'custom';
+  }
+}
+
+abstract class CustomCrashFrame implements CrashFrame {
+  factory CustomCrashFrame(
+      {@required String no,
+      @required int pc,
+      @required String binary,
+      @required @nullable int offset,
+      @required @nullable String location,
+      @required @nullable String symbol}) = _$CustomCrashFrame;
+
+  factory CustomCrashFrame.fromJson(Map<String, dynamic> json) =
+      _$CustomCrashFrame.fromJson;
+
+  String get no;
+  @override
+  int get pc;
+  @override
+  String get binary;
+  @nullable
+  int get offset;
+  @nullable
+  String get location;
+  @nullable
+  String get symbol;
+  @override
+  $CustomCrashFrameCopyWith<CustomCrashFrame> get copyWith;
+}
+
+/// @nodoc
+abstract class $DartvmCrashFrameCopyWith<$Res>
+    implements $CrashFrameCopyWith<$Res> {
+  factory $DartvmCrashFrameCopyWith(
+          DartvmCrashFrame value, $Res Function(DartvmCrashFrame) then) =
+      _$DartvmCrashFrameCopyWithImpl<$Res>;
+  @override
+  $Res call({int pc, String binary, int offset});
+}
+
+/// @nodoc
+class _$DartvmCrashFrameCopyWithImpl<$Res>
+    extends _$CrashFrameCopyWithImpl<$Res>
+    implements $DartvmCrashFrameCopyWith<$Res> {
+  _$DartvmCrashFrameCopyWithImpl(
+      DartvmCrashFrame _value, $Res Function(DartvmCrashFrame) _then)
+      : super(_value, (v) => _then(v as DartvmCrashFrame));
+
+  @override
+  DartvmCrashFrame get _value => super._value as DartvmCrashFrame;
+
+  @override
+  $Res call({
+    Object pc = freezed,
+    Object binary = freezed,
+    Object offset = freezed,
+  }) {
+    return _then(DartvmCrashFrame(
+      pc: pc == freezed ? _value.pc : pc as int,
+      binary: binary == freezed ? _value.binary : binary as String,
+      offset: offset == freezed ? _value.offset : offset as int,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$DartvmCrashFrame implements DartvmCrashFrame {
+  _$DartvmCrashFrame(
+      {@required this.pc, @required this.binary, @required this.offset})
+      : assert(pc != null),
+        assert(binary != null),
+        assert(offset != null);
+
+  factory _$DartvmCrashFrame.fromJson(Map<String, dynamic> json) =>
+      _$_$DartvmCrashFrameFromJson(json);
+
+  @override
+
+  /// Absolute PC of the frame.
+  final int pc;
+  @override
+
+  /// Binary which contains the given PC.
+  final String binary;
+  @override
+
+  /// Offset from load base of the binary to the PC.
+  final int offset;
+
+  @override
+  String toString() {
+    return 'CrashFrame.dartvm(pc: $pc, binary: $binary, offset: $offset)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is DartvmCrashFrame &&
+            (identical(other.pc, pc) ||
+                const DeepCollectionEquality().equals(other.pc, pc)) &&
+            (identical(other.binary, binary) ||
+                const DeepCollectionEquality().equals(other.binary, binary)) &&
+            (identical(other.offset, offset) ||
+                const DeepCollectionEquality().equals(other.offset, offset)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(pc) ^
+      const DeepCollectionEquality().hash(binary) ^
+      const DeepCollectionEquality().hash(offset);
+
+  @override
+  $DartvmCrashFrameCopyWith<DartvmCrashFrame> get copyWith =>
+      _$DartvmCrashFrameCopyWithImpl<DartvmCrashFrame>(this, _$identity);
+
+  @override
+  @optionalTypeArgs
+  Result when<Result extends Object>({
+    @required
+        Result ios(String no, String binary, int pc, String symbol,
+            @nullable int offset, String location),
+    @required
+        Result android(String no, int pc, String binary, String rest,
+            @nullable String buildId),
+    @required
+        Result custom(String no, int pc, String binary, @nullable int offset,
+            @nullable String location, @nullable String symbol),
+    @required Result dartvm(int pc, String binary, int offset),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return dartvm(pc, binary, offset);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeWhen<Result extends Object>({
+    Result ios(String no, String binary, int pc, String symbol,
+        @nullable int offset, String location),
+    Result android(String no, int pc, String binary, String rest,
+        @nullable String buildId),
+    Result custom(String no, int pc, String binary, @nullable int offset,
+        @nullable String location, @nullable String symbol),
+    Result dartvm(int pc, String binary, int offset),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (dartvm != null) {
+      return dartvm(pc, binary, offset);
+    }
+    return orElse();
+  }
+
+  @override
+  @optionalTypeArgs
+  Result map<Result extends Object>({
+    @required Result ios(IosCrashFrame value),
+    @required Result android(AndroidCrashFrame value),
+    @required Result custom(CustomCrashFrame value),
+    @required Result dartvm(DartvmCrashFrame value),
+  }) {
+    assert(ios != null);
+    assert(android != null);
+    assert(custom != null);
+    assert(dartvm != null);
+    return dartvm(this);
+  }
+
+  @override
+  @optionalTypeArgs
+  Result maybeMap<Result extends Object>({
+    Result ios(IosCrashFrame value),
+    Result android(AndroidCrashFrame value),
+    Result custom(CustomCrashFrame value),
+    Result dartvm(DartvmCrashFrame value),
+    @required Result orElse(),
+  }) {
+    assert(orElse != null);
+    if (dartvm != null) {
+      return dartvm(this);
+    }
+    return orElse();
+  }
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$DartvmCrashFrameToJson(this)..['runtimeType'] = 'dartvm';
+  }
+}
+
+abstract class DartvmCrashFrame implements CrashFrame {
+  factory DartvmCrashFrame(
+      {@required int pc,
+      @required String binary,
+      @required int offset}) = _$DartvmCrashFrame;
+
+  factory DartvmCrashFrame.fromJson(Map<String, dynamic> json) =
+      _$DartvmCrashFrame.fromJson;
+
+  @override
+
+  /// Absolute PC of the frame.
+  int get pc;
+  @override
+
+  /// Binary which contains the given PC.
+  String get binary;
+
+  /// Offset from load base of the binary to the PC.
+  int get offset;
+  @override
+  $DartvmCrashFrameCopyWith<DartvmCrashFrame> get copyWith;
+}
+
+Crash _$CrashFromJson(Map<String, dynamic> json) {
+  return _Crash.fromJson(json);
+}
+
+/// @nodoc
+class _$CrashTearOff {
+  const _$CrashTearOff();
+
+// ignore: unused_element
+  _Crash call(
+      {EngineVariant engineVariant,
+      List<CrashFrame> frames,
+      @required String format,
+      @nullable int androidMajorVersion}) {
+    return _Crash(
+      engineVariant: engineVariant,
+      frames: frames,
+      format: format,
+      androidMajorVersion: androidMajorVersion,
+    );
+  }
+
+// ignore: unused_element
+  Crash fromJson(Map<String, Object> json) {
+    return Crash.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $Crash = _$CrashTearOff();
+
+/// @nodoc
+mixin _$Crash {
+  EngineVariant get engineVariant;
+  List<CrashFrame> get frames;
+  String get format;
+  @nullable
+  int get androidMajorVersion;
+
+  Map<String, dynamic> toJson();
+  $CrashCopyWith<Crash> get copyWith;
+}
+
+/// @nodoc
+abstract class $CrashCopyWith<$Res> {
+  factory $CrashCopyWith(Crash value, $Res Function(Crash) then) =
+      _$CrashCopyWithImpl<$Res>;
+  $Res call(
+      {EngineVariant engineVariant,
+      List<CrashFrame> frames,
+      String format,
+      @nullable int androidMajorVersion});
+
+  $EngineVariantCopyWith<$Res> get engineVariant;
+}
+
+/// @nodoc
+class _$CrashCopyWithImpl<$Res> implements $CrashCopyWith<$Res> {
+  _$CrashCopyWithImpl(this._value, this._then);
+
+  final Crash _value;
+  // ignore: unused_field
+  final $Res Function(Crash) _then;
+
+  @override
+  $Res call({
+    Object engineVariant = freezed,
+    Object frames = freezed,
+    Object format = freezed,
+    Object androidMajorVersion = freezed,
+  }) {
+    return _then(_value.copyWith(
+      engineVariant: engineVariant == freezed
+          ? _value.engineVariant
+          : engineVariant as EngineVariant,
+      frames: frames == freezed ? _value.frames : frames as List<CrashFrame>,
+      format: format == freezed ? _value.format : format as String,
+      androidMajorVersion: androidMajorVersion == freezed
+          ? _value.androidMajorVersion
+          : androidMajorVersion as int,
+    ));
+  }
+
+  @override
+  $EngineVariantCopyWith<$Res> get engineVariant {
+    if (_value.engineVariant == null) {
+      return null;
+    }
+    return $EngineVariantCopyWith<$Res>(_value.engineVariant, (value) {
+      return _then(_value.copyWith(engineVariant: value));
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$CrashCopyWith<$Res> implements $CrashCopyWith<$Res> {
+  factory _$CrashCopyWith(_Crash value, $Res Function(_Crash) then) =
+      __$CrashCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {EngineVariant engineVariant,
+      List<CrashFrame> frames,
+      String format,
+      @nullable int androidMajorVersion});
+
+  @override
+  $EngineVariantCopyWith<$Res> get engineVariant;
+}
+
+/// @nodoc
+class __$CrashCopyWithImpl<$Res> extends _$CrashCopyWithImpl<$Res>
+    implements _$CrashCopyWith<$Res> {
+  __$CrashCopyWithImpl(_Crash _value, $Res Function(_Crash) _then)
+      : super(_value, (v) => _then(v as _Crash));
+
+  @override
+  _Crash get _value => super._value as _Crash;
+
+  @override
+  $Res call({
+    Object engineVariant = freezed,
+    Object frames = freezed,
+    Object format = freezed,
+    Object androidMajorVersion = freezed,
+  }) {
+    return _then(_Crash(
+      engineVariant: engineVariant == freezed
+          ? _value.engineVariant
+          : engineVariant as EngineVariant,
+      frames: frames == freezed ? _value.frames : frames as List<CrashFrame>,
+      format: format == freezed ? _value.format : format as String,
+      androidMajorVersion: androidMajorVersion == freezed
+          ? _value.androidMajorVersion
+          : androidMajorVersion as int,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$_Crash implements _Crash {
+  _$_Crash(
+      {this.engineVariant,
+      this.frames,
+      @required this.format,
+      @nullable this.androidMajorVersion})
+      : assert(format != null);
+
+  factory _$_Crash.fromJson(Map<String, dynamic> json) =>
+      _$_$_CrashFromJson(json);
+
+  @override
+  final EngineVariant engineVariant;
+  @override
+  final List<CrashFrame> frames;
+  @override
+  final String format;
+  @override
+  @nullable
+  final int androidMajorVersion;
+
+  @override
+  String toString() {
+    return 'Crash(engineVariant: $engineVariant, frames: $frames, format: $format, androidMajorVersion: $androidMajorVersion)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _Crash &&
+            (identical(other.engineVariant, engineVariant) ||
+                const DeepCollectionEquality()
+                    .equals(other.engineVariant, engineVariant)) &&
+            (identical(other.frames, frames) ||
+                const DeepCollectionEquality().equals(other.frames, frames)) &&
+            (identical(other.format, format) ||
+                const DeepCollectionEquality().equals(other.format, format)) &&
+            (identical(other.androidMajorVersion, androidMajorVersion) ||
+                const DeepCollectionEquality()
+                    .equals(other.androidMajorVersion, androidMajorVersion)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(engineVariant) ^
+      const DeepCollectionEquality().hash(frames) ^
+      const DeepCollectionEquality().hash(format) ^
+      const DeepCollectionEquality().hash(androidMajorVersion);
+
+  @override
+  _$CrashCopyWith<_Crash> get copyWith =>
+      __$CrashCopyWithImpl<_Crash>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$_CrashToJson(this);
+  }
+}
+
+abstract class _Crash implements Crash {
+  factory _Crash(
+      {EngineVariant engineVariant,
+      List<CrashFrame> frames,
+      @required String format,
+      @nullable int androidMajorVersion}) = _$_Crash;
+
+  factory _Crash.fromJson(Map<String, dynamic> json) = _$_Crash.fromJson;
+
+  @override
+  EngineVariant get engineVariant;
+  @override
+  List<CrashFrame> get frames;
+  @override
+  String get format;
+  @override
+  @nullable
+  int get androidMajorVersion;
+  @override
+  _$CrashCopyWith<_Crash> get copyWith;
+}
+
+SymbolizationResult _$SymbolizationResultFromJson(Map<String, dynamic> json) {
+  return _SymbolizationResult.fromJson(json);
+}
+
+/// @nodoc
+class _$SymbolizationResultTearOff {
+  const _$SymbolizationResultTearOff();
+
+// ignore: unused_element
+  _SymbolizationResult call(
+      {@required Crash crash,
+      @required @nullable EngineBuild engineBuild,
+      @required @nullable String symbolized,
+      List<SymbolizationNote> notes = const []}) {
+    return _SymbolizationResult(
+      crash: crash,
+      engineBuild: engineBuild,
+      symbolized: symbolized,
+      notes: notes,
+    );
+  }
+
+// ignore: unused_element
+  SymbolizationResult fromJson(Map<String, Object> json) {
+    return SymbolizationResult.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $SymbolizationResult = _$SymbolizationResultTearOff();
+
+/// @nodoc
+mixin _$SymbolizationResult {
+  Crash get crash;
+  @nullable
+  EngineBuild get engineBuild;
+
+  /// Symbolization result - not null if symbolization succeeded.
+  @nullable
+  String get symbolized;
+  List<SymbolizationNote> get notes;
+
+  Map<String, dynamic> toJson();
+  $SymbolizationResultCopyWith<SymbolizationResult> get copyWith;
+}
+
+/// @nodoc
+abstract class $SymbolizationResultCopyWith<$Res> {
+  factory $SymbolizationResultCopyWith(
+          SymbolizationResult value, $Res Function(SymbolizationResult) then) =
+      _$SymbolizationResultCopyWithImpl<$Res>;
+  $Res call(
+      {Crash crash,
+      @nullable EngineBuild engineBuild,
+      @nullable String symbolized,
+      List<SymbolizationNote> notes});
+
+  $CrashCopyWith<$Res> get crash;
+  $EngineBuildCopyWith<$Res> get engineBuild;
+}
+
+/// @nodoc
+class _$SymbolizationResultCopyWithImpl<$Res>
+    implements $SymbolizationResultCopyWith<$Res> {
+  _$SymbolizationResultCopyWithImpl(this._value, this._then);
+
+  final SymbolizationResult _value;
+  // ignore: unused_field
+  final $Res Function(SymbolizationResult) _then;
+
+  @override
+  $Res call({
+    Object crash = freezed,
+    Object engineBuild = freezed,
+    Object symbolized = freezed,
+    Object notes = freezed,
+  }) {
+    return _then(_value.copyWith(
+      crash: crash == freezed ? _value.crash : crash as Crash,
+      engineBuild: engineBuild == freezed
+          ? _value.engineBuild
+          : engineBuild as EngineBuild,
+      symbolized:
+          symbolized == freezed ? _value.symbolized : symbolized as String,
+      notes: notes == freezed ? _value.notes : notes as List<SymbolizationNote>,
+    ));
+  }
+
+  @override
+  $CrashCopyWith<$Res> get crash {
+    if (_value.crash == null) {
+      return null;
+    }
+    return $CrashCopyWith<$Res>(_value.crash, (value) {
+      return _then(_value.copyWith(crash: value));
+    });
+  }
+
+  @override
+  $EngineBuildCopyWith<$Res> get engineBuild {
+    if (_value.engineBuild == null) {
+      return null;
+    }
+    return $EngineBuildCopyWith<$Res>(_value.engineBuild, (value) {
+      return _then(_value.copyWith(engineBuild: value));
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$SymbolizationResultCopyWith<$Res>
+    implements $SymbolizationResultCopyWith<$Res> {
+  factory _$SymbolizationResultCopyWith(_SymbolizationResult value,
+          $Res Function(_SymbolizationResult) then) =
+      __$SymbolizationResultCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {Crash crash,
+      @nullable EngineBuild engineBuild,
+      @nullable String symbolized,
+      List<SymbolizationNote> notes});
+
+  @override
+  $CrashCopyWith<$Res> get crash;
+  @override
+  $EngineBuildCopyWith<$Res> get engineBuild;
+}
+
+/// @nodoc
+class __$SymbolizationResultCopyWithImpl<$Res>
+    extends _$SymbolizationResultCopyWithImpl<$Res>
+    implements _$SymbolizationResultCopyWith<$Res> {
+  __$SymbolizationResultCopyWithImpl(
+      _SymbolizationResult _value, $Res Function(_SymbolizationResult) _then)
+      : super(_value, (v) => _then(v as _SymbolizationResult));
+
+  @override
+  _SymbolizationResult get _value => super._value as _SymbolizationResult;
+
+  @override
+  $Res call({
+    Object crash = freezed,
+    Object engineBuild = freezed,
+    Object symbolized = freezed,
+    Object notes = freezed,
+  }) {
+    return _then(_SymbolizationResult(
+      crash: crash == freezed ? _value.crash : crash as Crash,
+      engineBuild: engineBuild == freezed
+          ? _value.engineBuild
+          : engineBuild as EngineBuild,
+      symbolized:
+          symbolized == freezed ? _value.symbolized : symbolized as String,
+      notes: notes == freezed ? _value.notes : notes as List<SymbolizationNote>,
+    ));
+  }
+}
+
+@JsonSerializable(explicitToJson: true)
+
+/// @nodoc
+class _$_SymbolizationResult implements _SymbolizationResult {
+  _$_SymbolizationResult(
+      {@required this.crash,
+      @required @nullable this.engineBuild,
+      @required @nullable this.symbolized,
+      this.notes = const []})
+      : assert(crash != null),
+        assert(notes != null);
+
+  factory _$_SymbolizationResult.fromJson(Map<String, dynamic> json) =>
+      _$_$_SymbolizationResultFromJson(json);
+
+  @override
+  final Crash crash;
+  @override
+  @nullable
+  final EngineBuild engineBuild;
+  @override
+
+  /// Symbolization result - not null if symbolization succeeded.
+  @nullable
+  final String symbolized;
+  @JsonKey(defaultValue: const [])
+  @override
+  final List<SymbolizationNote> notes;
+
+  @override
+  String toString() {
+    return 'SymbolizationResult(crash: $crash, engineBuild: $engineBuild, symbolized: $symbolized, notes: $notes)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _SymbolizationResult &&
+            (identical(other.crash, crash) ||
+                const DeepCollectionEquality().equals(other.crash, crash)) &&
+            (identical(other.engineBuild, engineBuild) ||
+                const DeepCollectionEquality()
+                    .equals(other.engineBuild, engineBuild)) &&
+            (identical(other.symbolized, symbolized) ||
+                const DeepCollectionEquality()
+                    .equals(other.symbolized, symbolized)) &&
+            (identical(other.notes, notes) ||
+                const DeepCollectionEquality().equals(other.notes, notes)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(crash) ^
+      const DeepCollectionEquality().hash(engineBuild) ^
+      const DeepCollectionEquality().hash(symbolized) ^
+      const DeepCollectionEquality().hash(notes);
+
+  @override
+  _$SymbolizationResultCopyWith<_SymbolizationResult> get copyWith =>
+      __$SymbolizationResultCopyWithImpl<_SymbolizationResult>(
+          this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$_SymbolizationResultToJson(this);
+  }
+}
+
+abstract class _SymbolizationResult implements SymbolizationResult {
+  factory _SymbolizationResult(
+      {@required Crash crash,
+      @required @nullable EngineBuild engineBuild,
+      @required @nullable String symbolized,
+      List<SymbolizationNote> notes}) = _$_SymbolizationResult;
+
+  factory _SymbolizationResult.fromJson(Map<String, dynamic> json) =
+      _$_SymbolizationResult.fromJson;
+
+  @override
+  Crash get crash;
+  @override
+  @nullable
+  EngineBuild get engineBuild;
+  @override
+
+  /// Symbolization result - not null if symbolization succeeded.
+  @nullable
+  String get symbolized;
+  @override
+  List<SymbolizationNote> get notes;
+  @override
+  _$SymbolizationResultCopyWith<_SymbolizationResult> get copyWith;
+}
+
+SymbolizationNote _$SymbolizationNoteFromJson(Map<String, dynamic> json) {
+  return _SymbolizationNote.fromJson(json);
+}
+
+/// @nodoc
+class _$SymbolizationNoteTearOff {
+  const _$SymbolizationNoteTearOff();
+
+// ignore: unused_element
+  _SymbolizationNote call(
+      {@required SymbolizationNoteKind kind, @nullable String message}) {
+    return _SymbolizationNote(
+      kind: kind,
+      message: message,
+    );
+  }
+
+// ignore: unused_element
+  SymbolizationNote fromJson(Map<String, Object> json) {
+    return SymbolizationNote.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $SymbolizationNote = _$SymbolizationNoteTearOff();
+
+/// @nodoc
+mixin _$SymbolizationNote {
+  SymbolizationNoteKind get kind;
+  @nullable
+  String get message;
+
+  Map<String, dynamic> toJson();
+  $SymbolizationNoteCopyWith<SymbolizationNote> get copyWith;
+}
+
+/// @nodoc
+abstract class $SymbolizationNoteCopyWith<$Res> {
+  factory $SymbolizationNoteCopyWith(
+          SymbolizationNote value, $Res Function(SymbolizationNote) then) =
+      _$SymbolizationNoteCopyWithImpl<$Res>;
+  $Res call({SymbolizationNoteKind kind, @nullable String message});
+}
+
+/// @nodoc
+class _$SymbolizationNoteCopyWithImpl<$Res>
+    implements $SymbolizationNoteCopyWith<$Res> {
+  _$SymbolizationNoteCopyWithImpl(this._value, this._then);
+
+  final SymbolizationNote _value;
+  // ignore: unused_field
+  final $Res Function(SymbolizationNote) _then;
+
+  @override
+  $Res call({
+    Object kind = freezed,
+    Object message = freezed,
+  }) {
+    return _then(_value.copyWith(
+      kind: kind == freezed ? _value.kind : kind as SymbolizationNoteKind,
+      message: message == freezed ? _value.message : message as String,
+    ));
+  }
+}
+
+/// @nodoc
+abstract class _$SymbolizationNoteCopyWith<$Res>
+    implements $SymbolizationNoteCopyWith<$Res> {
+  factory _$SymbolizationNoteCopyWith(
+          _SymbolizationNote value, $Res Function(_SymbolizationNote) then) =
+      __$SymbolizationNoteCopyWithImpl<$Res>;
+  @override
+  $Res call({SymbolizationNoteKind kind, @nullable String message});
+}
+
+/// @nodoc
+class __$SymbolizationNoteCopyWithImpl<$Res>
+    extends _$SymbolizationNoteCopyWithImpl<$Res>
+    implements _$SymbolizationNoteCopyWith<$Res> {
+  __$SymbolizationNoteCopyWithImpl(
+      _SymbolizationNote _value, $Res Function(_SymbolizationNote) _then)
+      : super(_value, (v) => _then(v as _SymbolizationNote));
+
+  @override
+  _SymbolizationNote get _value => super._value as _SymbolizationNote;
+
+  @override
+  $Res call({
+    Object kind = freezed,
+    Object message = freezed,
+  }) {
+    return _then(_SymbolizationNote(
+      kind: kind == freezed ? _value.kind : kind as SymbolizationNoteKind,
+      message: message == freezed ? _value.message : message as String,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$_SymbolizationNote implements _SymbolizationNote {
+  _$_SymbolizationNote({@required this.kind, @nullable this.message})
+      : assert(kind != null);
+
+  factory _$_SymbolizationNote.fromJson(Map<String, dynamic> json) =>
+      _$_$_SymbolizationNoteFromJson(json);
+
+  @override
+  final SymbolizationNoteKind kind;
+  @override
+  @nullable
+  final String message;
+
+  @override
+  String toString() {
+    return 'SymbolizationNote(kind: $kind, message: $message)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _SymbolizationNote &&
+            (identical(other.kind, kind) ||
+                const DeepCollectionEquality().equals(other.kind, kind)) &&
+            (identical(other.message, message) ||
+                const DeepCollectionEquality().equals(other.message, message)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(kind) ^
+      const DeepCollectionEquality().hash(message);
+
+  @override
+  _$SymbolizationNoteCopyWith<_SymbolizationNote> get copyWith =>
+      __$SymbolizationNoteCopyWithImpl<_SymbolizationNote>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$_SymbolizationNoteToJson(this);
+  }
+}
+
+abstract class _SymbolizationNote implements SymbolizationNote {
+  factory _SymbolizationNote(
+      {@required SymbolizationNoteKind kind,
+      @nullable String message}) = _$_SymbolizationNote;
+
+  factory _SymbolizationNote.fromJson(Map<String, dynamic> json) =
+      _$_SymbolizationNote.fromJson;
+
+  @override
+  SymbolizationNoteKind get kind;
+  @override
+  @nullable
+  String get message;
+  @override
+  _$SymbolizationNoteCopyWith<_SymbolizationNote> get copyWith;
+}
+
+/// @nodoc
+class _$BotCommandTearOff {
+  const _$BotCommandTearOff();
+
+// ignore: unused_element
+  _BotCommand call(
+      {@required SymbolizationOverrides overrides,
+      @required bool symbolizeThis,
+      @required Set<String> worklist}) {
+    return _BotCommand(
+      overrides: overrides,
+      symbolizeThis: symbolizeThis,
+      worklist: worklist,
+    );
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $BotCommand = _$BotCommandTearOff();
+
+/// @nodoc
+mixin _$BotCommand {
+  /// Overrides that should be used for symbolization. These overrides
+  /// replace or augment information available in the comments themselves.
+  SymbolizationOverrides get overrides;
+
+  /// [true] if the user requested to symbolize the comment that contains
+  /// command.
+  bool get symbolizeThis;
+
+  /// List of references to comments which need to be symbolized. Each reference
+  /// is either in `issue-id` or in `issuecomment-id` format.
+  Set<String> get worklist;
+
+  $BotCommandCopyWith<BotCommand> get copyWith;
+}
+
+/// @nodoc
+abstract class $BotCommandCopyWith<$Res> {
+  factory $BotCommandCopyWith(
+          BotCommand value, $Res Function(BotCommand) then) =
+      _$BotCommandCopyWithImpl<$Res>;
+  $Res call(
+      {SymbolizationOverrides overrides,
+      bool symbolizeThis,
+      Set<String> worklist});
+
+  $SymbolizationOverridesCopyWith<$Res> get overrides;
+}
+
+/// @nodoc
+class _$BotCommandCopyWithImpl<$Res> implements $BotCommandCopyWith<$Res> {
+  _$BotCommandCopyWithImpl(this._value, this._then);
+
+  final BotCommand _value;
+  // ignore: unused_field
+  final $Res Function(BotCommand) _then;
+
+  @override
+  $Res call({
+    Object overrides = freezed,
+    Object symbolizeThis = freezed,
+    Object worklist = freezed,
+  }) {
+    return _then(_value.copyWith(
+      overrides: overrides == freezed
+          ? _value.overrides
+          : overrides as SymbolizationOverrides,
+      symbolizeThis: symbolizeThis == freezed
+          ? _value.symbolizeThis
+          : symbolizeThis as bool,
+      worklist: worklist == freezed ? _value.worklist : worklist as Set<String>,
+    ));
+  }
+
+  @override
+  $SymbolizationOverridesCopyWith<$Res> get overrides {
+    if (_value.overrides == null) {
+      return null;
+    }
+    return $SymbolizationOverridesCopyWith<$Res>(_value.overrides, (value) {
+      return _then(_value.copyWith(overrides: value));
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$BotCommandCopyWith<$Res> implements $BotCommandCopyWith<$Res> {
+  factory _$BotCommandCopyWith(
+          _BotCommand value, $Res Function(_BotCommand) then) =
+      __$BotCommandCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {SymbolizationOverrides overrides,
+      bool symbolizeThis,
+      Set<String> worklist});
+
+  @override
+  $SymbolizationOverridesCopyWith<$Res> get overrides;
+}
+
+/// @nodoc
+class __$BotCommandCopyWithImpl<$Res> extends _$BotCommandCopyWithImpl<$Res>
+    implements _$BotCommandCopyWith<$Res> {
+  __$BotCommandCopyWithImpl(
+      _BotCommand _value, $Res Function(_BotCommand) _then)
+      : super(_value, (v) => _then(v as _BotCommand));
+
+  @override
+  _BotCommand get _value => super._value as _BotCommand;
+
+  @override
+  $Res call({
+    Object overrides = freezed,
+    Object symbolizeThis = freezed,
+    Object worklist = freezed,
+  }) {
+    return _then(_BotCommand(
+      overrides: overrides == freezed
+          ? _value.overrides
+          : overrides as SymbolizationOverrides,
+      symbolizeThis: symbolizeThis == freezed
+          ? _value.symbolizeThis
+          : symbolizeThis as bool,
+      worklist: worklist == freezed ? _value.worklist : worklist as Set<String>,
+    ));
+  }
+}
+
+/// @nodoc
+class _$_BotCommand implements _BotCommand {
+  _$_BotCommand(
+      {@required this.overrides,
+      @required this.symbolizeThis,
+      @required this.worklist})
+      : assert(overrides != null),
+        assert(symbolizeThis != null),
+        assert(worklist != null);
+
+  @override
+
+  /// Overrides that should be used for symbolization. These overrides
+  /// replace or augment information available in the comments themselves.
+  final SymbolizationOverrides overrides;
+  @override
+
+  /// [true] if the user requested to symbolize the comment that contains
+  /// command.
+  final bool symbolizeThis;
+  @override
+
+  /// List of references to comments which need to be symbolized. Each reference
+  /// is either in `issue-id` or in `issuecomment-id` format.
+  final Set<String> worklist;
+
+  @override
+  String toString() {
+    return 'BotCommand(overrides: $overrides, symbolizeThis: $symbolizeThis, worklist: $worklist)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _BotCommand &&
+            (identical(other.overrides, overrides) ||
+                const DeepCollectionEquality()
+                    .equals(other.overrides, overrides)) &&
+            (identical(other.symbolizeThis, symbolizeThis) ||
+                const DeepCollectionEquality()
+                    .equals(other.symbolizeThis, symbolizeThis)) &&
+            (identical(other.worklist, worklist) ||
+                const DeepCollectionEquality()
+                    .equals(other.worklist, worklist)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(overrides) ^
+      const DeepCollectionEquality().hash(symbolizeThis) ^
+      const DeepCollectionEquality().hash(worklist);
+
+  @override
+  _$BotCommandCopyWith<_BotCommand> get copyWith =>
+      __$BotCommandCopyWithImpl<_BotCommand>(this, _$identity);
+}
+
+abstract class _BotCommand implements BotCommand {
+  factory _BotCommand(
+      {@required SymbolizationOverrides overrides,
+      @required bool symbolizeThis,
+      @required Set<String> worklist}) = _$_BotCommand;
+
+  @override
+
+  /// Overrides that should be used for symbolization. These overrides
+  /// replace or augment information available in the comments themselves.
+  SymbolizationOverrides get overrides;
+  @override
+
+  /// [true] if the user requested to symbolize the comment that contains
+  /// command.
+  bool get symbolizeThis;
+  @override
+
+  /// List of references to comments which need to be symbolized. Each reference
+  /// is either in `issue-id` or in `issuecomment-id` format.
+  Set<String> get worklist;
+  @override
+  _$BotCommandCopyWith<_BotCommand> get copyWith;
+}
+
+/// @nodoc
+class _$SymbolizationOverridesTearOff {
+  const _$SymbolizationOverridesTearOff();
+
+// ignore: unused_element
+  _SymbolizationOverrides call(
+      {@nullable String engineHash,
+      @nullable String flutterVersion,
+      @nullable String arch,
+      @nullable String mode,
+      bool force = false,
+      @nullable String format,
+      @nullable String os}) {
+    return _SymbolizationOverrides(
+      engineHash: engineHash,
+      flutterVersion: flutterVersion,
+      arch: arch,
+      mode: mode,
+      force: force,
+      format: format,
+      os: os,
+    );
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $SymbolizationOverrides = _$SymbolizationOverridesTearOff();
+
+/// @nodoc
+mixin _$SymbolizationOverrides {
+  @nullable
+  String get engineHash;
+  @nullable
+  String get flutterVersion;
+  @nullable
+  String get arch;
+  @nullable
+  String get mode;
+  bool get force;
+  @nullable
+  String get format;
+  @nullable
+  String get os;
+
+  $SymbolizationOverridesCopyWith<SymbolizationOverrides> get copyWith;
+}
+
+/// @nodoc
+abstract class $SymbolizationOverridesCopyWith<$Res> {
+  factory $SymbolizationOverridesCopyWith(SymbolizationOverrides value,
+          $Res Function(SymbolizationOverrides) then) =
+      _$SymbolizationOverridesCopyWithImpl<$Res>;
+  $Res call(
+      {@nullable String engineHash,
+      @nullable String flutterVersion,
+      @nullable String arch,
+      @nullable String mode,
+      bool force,
+      @nullable String format,
+      @nullable String os});
+}
+
+/// @nodoc
+class _$SymbolizationOverridesCopyWithImpl<$Res>
+    implements $SymbolizationOverridesCopyWith<$Res> {
+  _$SymbolizationOverridesCopyWithImpl(this._value, this._then);
+
+  final SymbolizationOverrides _value;
+  // ignore: unused_field
+  final $Res Function(SymbolizationOverrides) _then;
+
+  @override
+  $Res call({
+    Object engineHash = freezed,
+    Object flutterVersion = freezed,
+    Object arch = freezed,
+    Object mode = freezed,
+    Object force = freezed,
+    Object format = freezed,
+    Object os = freezed,
+  }) {
+    return _then(_value.copyWith(
+      engineHash:
+          engineHash == freezed ? _value.engineHash : engineHash as String,
+      flutterVersion: flutterVersion == freezed
+          ? _value.flutterVersion
+          : flutterVersion as String,
+      arch: arch == freezed ? _value.arch : arch as String,
+      mode: mode == freezed ? _value.mode : mode as String,
+      force: force == freezed ? _value.force : force as bool,
+      format: format == freezed ? _value.format : format as String,
+      os: os == freezed ? _value.os : os as String,
+    ));
+  }
+}
+
+/// @nodoc
+abstract class _$SymbolizationOverridesCopyWith<$Res>
+    implements $SymbolizationOverridesCopyWith<$Res> {
+  factory _$SymbolizationOverridesCopyWith(_SymbolizationOverrides value,
+          $Res Function(_SymbolizationOverrides) then) =
+      __$SymbolizationOverridesCopyWithImpl<$Res>;
+  @override
+  $Res call(
+      {@nullable String engineHash,
+      @nullable String flutterVersion,
+      @nullable String arch,
+      @nullable String mode,
+      bool force,
+      @nullable String format,
+      @nullable String os});
+}
+
+/// @nodoc
+class __$SymbolizationOverridesCopyWithImpl<$Res>
+    extends _$SymbolizationOverridesCopyWithImpl<$Res>
+    implements _$SymbolizationOverridesCopyWith<$Res> {
+  __$SymbolizationOverridesCopyWithImpl(_SymbolizationOverrides _value,
+      $Res Function(_SymbolizationOverrides) _then)
+      : super(_value, (v) => _then(v as _SymbolizationOverrides));
+
+  @override
+  _SymbolizationOverrides get _value => super._value as _SymbolizationOverrides;
+
+  @override
+  $Res call({
+    Object engineHash = freezed,
+    Object flutterVersion = freezed,
+    Object arch = freezed,
+    Object mode = freezed,
+    Object force = freezed,
+    Object format = freezed,
+    Object os = freezed,
+  }) {
+    return _then(_SymbolizationOverrides(
+      engineHash:
+          engineHash == freezed ? _value.engineHash : engineHash as String,
+      flutterVersion: flutterVersion == freezed
+          ? _value.flutterVersion
+          : flutterVersion as String,
+      arch: arch == freezed ? _value.arch : arch as String,
+      mode: mode == freezed ? _value.mode : mode as String,
+      force: force == freezed ? _value.force : force as bool,
+      format: format == freezed ? _value.format : format as String,
+      os: os == freezed ? _value.os : os as String,
+    ));
+  }
+}
+
+/// @nodoc
+class _$_SymbolizationOverrides implements _SymbolizationOverrides {
+  _$_SymbolizationOverrides(
+      {@nullable this.engineHash,
+      @nullable this.flutterVersion,
+      @nullable this.arch,
+      @nullable this.mode,
+      this.force = false,
+      @nullable this.format,
+      @nullable this.os})
+      : assert(force != null);
+
+  @override
+  @nullable
+  final String engineHash;
+  @override
+  @nullable
+  final String flutterVersion;
+  @override
+  @nullable
+  final String arch;
+  @override
+  @nullable
+  final String mode;
+  @JsonKey(defaultValue: false)
+  @override
+  final bool force;
+  @override
+  @nullable
+  final String format;
+  @override
+  @nullable
+  final String os;
+
+  @override
+  String toString() {
+    return 'SymbolizationOverrides(engineHash: $engineHash, flutterVersion: $flutterVersion, arch: $arch, mode: $mode, force: $force, format: $format, os: $os)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _SymbolizationOverrides &&
+            (identical(other.engineHash, engineHash) ||
+                const DeepCollectionEquality()
+                    .equals(other.engineHash, engineHash)) &&
+            (identical(other.flutterVersion, flutterVersion) ||
+                const DeepCollectionEquality()
+                    .equals(other.flutterVersion, flutterVersion)) &&
+            (identical(other.arch, arch) ||
+                const DeepCollectionEquality().equals(other.arch, arch)) &&
+            (identical(other.mode, mode) ||
+                const DeepCollectionEquality().equals(other.mode, mode)) &&
+            (identical(other.force, force) ||
+                const DeepCollectionEquality().equals(other.force, force)) &&
+            (identical(other.format, format) ||
+                const DeepCollectionEquality().equals(other.format, format)) &&
+            (identical(other.os, os) ||
+                const DeepCollectionEquality().equals(other.os, os)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(engineHash) ^
+      const DeepCollectionEquality().hash(flutterVersion) ^
+      const DeepCollectionEquality().hash(arch) ^
+      const DeepCollectionEquality().hash(mode) ^
+      const DeepCollectionEquality().hash(force) ^
+      const DeepCollectionEquality().hash(format) ^
+      const DeepCollectionEquality().hash(os);
+
+  @override
+  _$SymbolizationOverridesCopyWith<_SymbolizationOverrides> get copyWith =>
+      __$SymbolizationOverridesCopyWithImpl<_SymbolizationOverrides>(
+          this, _$identity);
+}
+
+abstract class _SymbolizationOverrides implements SymbolizationOverrides {
+  factory _SymbolizationOverrides(
+      {@nullable String engineHash,
+      @nullable String flutterVersion,
+      @nullable String arch,
+      @nullable String mode,
+      bool force,
+      @nullable String format,
+      @nullable String os}) = _$_SymbolizationOverrides;
+
+  @override
+  @nullable
+  String get engineHash;
+  @override
+  @nullable
+  String get flutterVersion;
+  @override
+  @nullable
+  String get arch;
+  @override
+  @nullable
+  String get mode;
+  @override
+  bool get force;
+  @override
+  @nullable
+  String get format;
+  @override
+  @nullable
+  String get os;
+  @override
+  _$SymbolizationOverridesCopyWith<_SymbolizationOverrides> get copyWith;
+}
+
+ServerConfig _$ServerConfigFromJson(Map<String, dynamic> json) {
+  return _ServerConfig.fromJson(json);
+}
+
+/// @nodoc
+class _$ServerConfigTearOff {
+  const _$ServerConfigTearOff();
+
+// ignore: unused_element
+  _ServerConfig call(
+      {String githubToken, String sendgridToken, String failureEmail}) {
+    return _ServerConfig(
+      githubToken: githubToken,
+      sendgridToken: sendgridToken,
+      failureEmail: failureEmail,
+    );
+  }
+
+// ignore: unused_element
+  ServerConfig fromJson(Map<String, Object> json) {
+    return ServerConfig.fromJson(json);
+  }
+}
+
+/// @nodoc
+// ignore: unused_element
+const $ServerConfig = _$ServerConfigTearOff();
+
+/// @nodoc
+mixin _$ServerConfig {
+  String get githubToken;
+  String get sendgridToken;
+  String get failureEmail;
+
+  Map<String, dynamic> toJson();
+  $ServerConfigCopyWith<ServerConfig> get copyWith;
+}
+
+/// @nodoc
+abstract class $ServerConfigCopyWith<$Res> {
+  factory $ServerConfigCopyWith(
+          ServerConfig value, $Res Function(ServerConfig) then) =
+      _$ServerConfigCopyWithImpl<$Res>;
+  $Res call({String githubToken, String sendgridToken, String failureEmail});
+}
+
+/// @nodoc
+class _$ServerConfigCopyWithImpl<$Res> implements $ServerConfigCopyWith<$Res> {
+  _$ServerConfigCopyWithImpl(this._value, this._then);
+
+  final ServerConfig _value;
+  // ignore: unused_field
+  final $Res Function(ServerConfig) _then;
+
+  @override
+  $Res call({
+    Object githubToken = freezed,
+    Object sendgridToken = freezed,
+    Object failureEmail = freezed,
+  }) {
+    return _then(_value.copyWith(
+      githubToken:
+          githubToken == freezed ? _value.githubToken : githubToken as String,
+      sendgridToken: sendgridToken == freezed
+          ? _value.sendgridToken
+          : sendgridToken as String,
+      failureEmail: failureEmail == freezed
+          ? _value.failureEmail
+          : failureEmail as String,
+    ));
+  }
+}
+
+/// @nodoc
+abstract class _$ServerConfigCopyWith<$Res>
+    implements $ServerConfigCopyWith<$Res> {
+  factory _$ServerConfigCopyWith(
+          _ServerConfig value, $Res Function(_ServerConfig) then) =
+      __$ServerConfigCopyWithImpl<$Res>;
+  @override
+  $Res call({String githubToken, String sendgridToken, String failureEmail});
+}
+
+/// @nodoc
+class __$ServerConfigCopyWithImpl<$Res> extends _$ServerConfigCopyWithImpl<$Res>
+    implements _$ServerConfigCopyWith<$Res> {
+  __$ServerConfigCopyWithImpl(
+      _ServerConfig _value, $Res Function(_ServerConfig) _then)
+      : super(_value, (v) => _then(v as _ServerConfig));
+
+  @override
+  _ServerConfig get _value => super._value as _ServerConfig;
+
+  @override
+  $Res call({
+    Object githubToken = freezed,
+    Object sendgridToken = freezed,
+    Object failureEmail = freezed,
+  }) {
+    return _then(_ServerConfig(
+      githubToken:
+          githubToken == freezed ? _value.githubToken : githubToken as String,
+      sendgridToken: sendgridToken == freezed
+          ? _value.sendgridToken
+          : sendgridToken as String,
+      failureEmail: failureEmail == freezed
+          ? _value.failureEmail
+          : failureEmail as String,
+    ));
+  }
+}
+
+@JsonSerializable()
+
+/// @nodoc
+class _$_ServerConfig implements _ServerConfig {
+  _$_ServerConfig({this.githubToken, this.sendgridToken, this.failureEmail});
+
+  factory _$_ServerConfig.fromJson(Map<String, dynamic> json) =>
+      _$_$_ServerConfigFromJson(json);
+
+  @override
+  final String githubToken;
+  @override
+  final String sendgridToken;
+  @override
+  final String failureEmail;
+
+  @override
+  String toString() {
+    return 'ServerConfig(githubToken: $githubToken, sendgridToken: $sendgridToken, failureEmail: $failureEmail)';
+  }
+
+  @override
+  bool operator ==(dynamic other) {
+    return identical(this, other) ||
+        (other is _ServerConfig &&
+            (identical(other.githubToken, githubToken) ||
+                const DeepCollectionEquality()
+                    .equals(other.githubToken, githubToken)) &&
+            (identical(other.sendgridToken, sendgridToken) ||
+                const DeepCollectionEquality()
+                    .equals(other.sendgridToken, sendgridToken)) &&
+            (identical(other.failureEmail, failureEmail) ||
+                const DeepCollectionEquality()
+                    .equals(other.failureEmail, failureEmail)));
+  }
+
+  @override
+  int get hashCode =>
+      runtimeType.hashCode ^
+      const DeepCollectionEquality().hash(githubToken) ^
+      const DeepCollectionEquality().hash(sendgridToken) ^
+      const DeepCollectionEquality().hash(failureEmail);
+
+  @override
+  _$ServerConfigCopyWith<_ServerConfig> get copyWith =>
+      __$ServerConfigCopyWithImpl<_ServerConfig>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$_$_ServerConfigToJson(this);
+  }
+}
+
+abstract class _ServerConfig implements ServerConfig {
+  factory _ServerConfig(
+      {String githubToken,
+      String sendgridToken,
+      String failureEmail}) = _$_ServerConfig;
+
+  factory _ServerConfig.fromJson(Map<String, dynamic> json) =
+      _$_ServerConfig.fromJson;
+
+  @override
+  String get githubToken;
+  @override
+  String get sendgridToken;
+  @override
+  String get failureEmail;
+  @override
+  _$ServerConfigCopyWith<_ServerConfig> get copyWith;
+}
diff --git a/github-label-notifier/symbolizer/lib/model.g.dart b/github-label-notifier/symbolizer/lib/model.g.dart
new file mode 100644
index 0000000..cb3e3af
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/model.g.dart
@@ -0,0 +1,239 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of symbolizer.model;
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+_$_EngineVariant _$_$_EngineVariantFromJson(Map<String, dynamic> json) {
+  return _$_EngineVariant(
+    os: json['os'] as String,
+    arch: json['arch'] as String,
+    mode: json['mode'] as String,
+  );
+}
+
+Map<String, dynamic> _$_$_EngineVariantToJson(_$_EngineVariant instance) =>
+    <String, dynamic>{
+      'os': instance.os,
+      'arch': instance.arch,
+      'mode': instance.mode,
+    };
+
+_$_EngineBuild _$_$_EngineBuildFromJson(Map<String, dynamic> json) {
+  return _$_EngineBuild(
+    engineHash: json['engineHash'] as String,
+    variant: json['variant'] == null
+        ? null
+        : EngineVariant.fromJson(json['variant'] as Map<String, dynamic>),
+  );
+}
+
+Map<String, dynamic> _$_$_EngineBuildToJson(_$_EngineBuild instance) =>
+    <String, dynamic>{
+      'engineHash': instance.engineHash,
+      'variant': instance.variant,
+    };
+
+_$IosCrashFrame _$_$IosCrashFrameFromJson(Map<String, dynamic> json) {
+  return _$IosCrashFrame(
+    no: json['no'] as String,
+    binary: json['binary'] as String,
+    pc: json['pc'] as int,
+    symbol: json['symbol'] as String,
+    offset: json['offset'] as int,
+    location: json['location'] as String,
+  );
+}
+
+Map<String, dynamic> _$_$IosCrashFrameToJson(_$IosCrashFrame instance) =>
+    <String, dynamic>{
+      'no': instance.no,
+      'binary': instance.binary,
+      'pc': instance.pc,
+      'symbol': instance.symbol,
+      'offset': instance.offset,
+      'location': instance.location,
+    };
+
+_$AndroidCrashFrame _$_$AndroidCrashFrameFromJson(Map<String, dynamic> json) {
+  return _$AndroidCrashFrame(
+    no: json['no'] as String,
+    pc: json['pc'] as int,
+    binary: json['binary'] as String,
+    rest: json['rest'] as String,
+    buildId: json['buildId'] as String,
+  );
+}
+
+Map<String, dynamic> _$_$AndroidCrashFrameToJson(
+        _$AndroidCrashFrame instance) =>
+    <String, dynamic>{
+      'no': instance.no,
+      'pc': instance.pc,
+      'binary': instance.binary,
+      'rest': instance.rest,
+      'buildId': instance.buildId,
+    };
+
+_$CustomCrashFrame _$_$CustomCrashFrameFromJson(Map<String, dynamic> json) {
+  return _$CustomCrashFrame(
+    no: json['no'] as String,
+    pc: json['pc'] as int,
+    binary: json['binary'] as String,
+    offset: json['offset'] as int,
+    location: json['location'] as String,
+    symbol: json['symbol'] as String,
+  );
+}
+
+Map<String, dynamic> _$_$CustomCrashFrameToJson(_$CustomCrashFrame instance) =>
+    <String, dynamic>{
+      'no': instance.no,
+      'pc': instance.pc,
+      'binary': instance.binary,
+      'offset': instance.offset,
+      'location': instance.location,
+      'symbol': instance.symbol,
+    };
+
+_$DartvmCrashFrame _$_$DartvmCrashFrameFromJson(Map<String, dynamic> json) {
+  return _$DartvmCrashFrame(
+    pc: json['pc'] as int,
+    binary: json['binary'] as String,
+    offset: json['offset'] as int,
+  );
+}
+
+Map<String, dynamic> _$_$DartvmCrashFrameToJson(_$DartvmCrashFrame instance) =>
+    <String, dynamic>{
+      'pc': instance.pc,
+      'binary': instance.binary,
+      'offset': instance.offset,
+    };
+
+_$_Crash _$_$_CrashFromJson(Map<String, dynamic> json) {
+  return _$_Crash(
+    engineVariant: json['engineVariant'] == null
+        ? null
+        : EngineVariant.fromJson(json['engineVariant'] as Map<String, dynamic>),
+    frames: (json['frames'] as List)
+        ?.map((e) =>
+            e == null ? null : CrashFrame.fromJson(e as Map<String, dynamic>))
+        ?.toList(),
+    format: json['format'] as String,
+    androidMajorVersion: json['androidMajorVersion'] as int,
+  );
+}
+
+Map<String, dynamic> _$_$_CrashToJson(_$_Crash instance) => <String, dynamic>{
+      'engineVariant': instance.engineVariant,
+      'frames': instance.frames,
+      'format': instance.format,
+      'androidMajorVersion': instance.androidMajorVersion,
+    };
+
+_$_SymbolizationResult _$_$_SymbolizationResultFromJson(
+    Map<String, dynamic> json) {
+  return _$_SymbolizationResult(
+    crash: json['crash'] == null
+        ? null
+        : Crash.fromJson(json['crash'] as Map<String, dynamic>),
+    engineBuild: json['engineBuild'] == null
+        ? null
+        : EngineBuild.fromJson(json['engineBuild'] as Map<String, dynamic>),
+    symbolized: json['symbolized'] as String,
+    notes: (json['notes'] as List)
+            ?.map((e) => e == null
+                ? null
+                : SymbolizationNote.fromJson(e as Map<String, dynamic>))
+            ?.toList() ??
+        [],
+  );
+}
+
+Map<String, dynamic> _$_$_SymbolizationResultToJson(
+        _$_SymbolizationResult instance) =>
+    <String, dynamic>{
+      'crash': instance.crash?.toJson(),
+      'engineBuild': instance.engineBuild?.toJson(),
+      'symbolized': instance.symbolized,
+      'notes': instance.notes?.map((e) => e?.toJson())?.toList(),
+    };
+
+_$_SymbolizationNote _$_$_SymbolizationNoteFromJson(Map<String, dynamic> json) {
+  return _$_SymbolizationNote(
+    kind: _$enumDecodeNullable(_$SymbolizationNoteKindEnumMap, json['kind']),
+    message: json['message'] as String,
+  );
+}
+
+Map<String, dynamic> _$_$_SymbolizationNoteToJson(
+        _$_SymbolizationNote instance) =>
+    <String, dynamic>{
+      'kind': _$SymbolizationNoteKindEnumMap[instance.kind],
+      'message': instance.message,
+    };
+
+T _$enumDecode<T>(
+  Map<T, dynamic> enumValues,
+  dynamic source, {
+  T unknownValue,
+}) {
+  if (source == null) {
+    throw ArgumentError('A value must be provided. Supported values: '
+        '${enumValues.values.join(', ')}');
+  }
+
+  final value = enumValues.entries
+      .singleWhere((e) => e.value == source, orElse: () => null)
+      ?.key;
+
+  if (value == null && unknownValue == null) {
+    throw ArgumentError('`$source` is not one of the supported values: '
+        '${enumValues.values.join(', ')}');
+  }
+  return value ?? unknownValue;
+}
+
+T _$enumDecodeNullable<T>(
+  Map<T, dynamic> enumValues,
+  dynamic source, {
+  T unknownValue,
+}) {
+  if (source == null) {
+    return null;
+  }
+  return _$enumDecode<T>(enumValues, source, unknownValue: unknownValue);
+}
+
+const _$SymbolizationNoteKindEnumMap = {
+  SymbolizationNoteKind.unknownEngineHash: 'unknownEngineHash',
+  SymbolizationNoteKind.unknownAbi: 'unknownAbi',
+  SymbolizationNoteKind.exceptionWhileGettingEngineHash:
+      'exceptionWhileGettingEngineHash',
+  SymbolizationNoteKind.exceptionWhileSymbolizing: 'exceptionWhileSymbolizing',
+  SymbolizationNoteKind.exceptionWhileLookingByBuildId:
+      'exceptionWhileLookingByBuildId',
+  SymbolizationNoteKind.defaultedToReleaseBuildIdUnavailable:
+      'defaultedToReleaseBuildIdUnavailable',
+  SymbolizationNoteKind.noSymbolsAvailableOnIos: 'noSymbolsAvailableOnIos',
+  SymbolizationNoteKind.buildIdMismatch: 'buildIdMismatch',
+  SymbolizationNoteKind.loadBaseDetected: 'loadBaseDetected',
+};
+
+_$_ServerConfig _$_$_ServerConfigFromJson(Map<String, dynamic> json) {
+  return _$_ServerConfig(
+    githubToken: json['githubToken'] as String,
+    sendgridToken: json['sendgridToken'] as String,
+    failureEmail: json['failureEmail'] as String,
+  );
+}
+
+Map<String, dynamic> _$_$_ServerConfigToJson(_$_ServerConfig instance) =>
+    <String, dynamic>{
+      'githubToken': instance.githubToken,
+      'sendgridToken': instance.sendgridToken,
+      'failureEmail': instance.failureEmail,
+    };
diff --git a/github-label-notifier/symbolizer/lib/ndk.dart b/github-label-notifier/symbolizer/lib/ndk.dart
new file mode 100644
index 0000000..25f56b1
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/ndk.dart
@@ -0,0 +1,115 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Wrapper around ndk tools used for symbolization.
+library symbolizer.ndk;
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:meta/meta.dart';
+import 'package:path/path.dart' as p;
+
+class Ndk {
+  /// Return information about .text section from the given [object] file.
+  Future<SectionInfo> getTextSectionInfo(String object) async {
+    final result = await _run(_readelfBinary, ['-lW', object]);
+    for (var match in _loadCommandPattern.allMatches(result)) {
+      if (match.namedGroup('flags').trim() == 'R E') {
+        // Found .text section
+        return SectionInfo(
+          fileOffset: int.parse(match.namedGroup('offset')),
+          fileSize: int.parse(match.namedGroup('filesz')),
+          virtualAddress: int.parse(match.namedGroup('vma')),
+        );
+      }
+    }
+    throw 'Failed to find LOAD command for text section in $object';
+  }
+
+  /// Return build-id of the given [object] file.
+  Future<String> getBuildId(String object) async {
+    final result = await _run(_readelfBinary, ['-nW', object]);
+    final match = _buildIdPattern.firstMatch(result);
+    if (match == null) {
+      throw 'Failed to extract build-id from $object';
+    }
+    return match.namedGroup('id');
+  }
+
+  /// Symbolize given [addresses] using information available for the specified
+  /// [arch] in the given [object] file.
+  Future<List<String>> symbolize(
+      {String object, List<String> addresses, String arch}) async {
+    final result = await _run(_llvmSymbolizerBinary, [
+      if (arch != null) '--default-arch=$arch',
+      '--obj',
+      object,
+      '--inlines',
+      ...addresses
+    ]);
+
+    final symbolized = result.replaceAllMapped(_builderPathPattern, (m) {
+      return p.relative(p.normalize(m[0]),
+          from: (m as RegExpMatch).namedGroup('root'));
+    }).split('\n\n');
+    if (symbolized.last == '') symbolized.length--;
+
+    return symbolized;
+  }
+
+  /// Runs `llvm-objdump` on the given [object] and returns all lines produced
+  /// by it.
+  Stream<String> objdump({
+    @required String object,
+    @required String arch,
+  }) async* {
+    final process =
+        await Process.start(_llvmObjdumpBinary, ['--arch=arm64', '-d', object]);
+
+    await for (var line in process.stdout
+        .transform(utf8.decoder)
+        .transform(const LineSplitter())) {
+      yield line;
+    }
+  }
+
+  /// Run the given binary and return its stdout output if the run is
+  /// successful. Otherwise throw an error.
+  static Future<String> _run(String binary, List<String> args) async {
+    final result = await Process.run(binary, args);
+    if (result.exitCode != 0) {
+      throw 'Failed to run ${p.basename(binary)} (${result.exitCode}):\nstdout:\n${result.stdout}\nstderr:\n${result.stderr}';
+    }
+    return result.stdout;
+  }
+}
+
+/// Information about a section extracted from ELF file.
+class SectionInfo {
+  final int fileOffset;
+  final int fileSize;
+  final int virtualAddress;
+
+  SectionInfo({
+    @required this.fileOffset,
+    @required this.fileSize,
+    @required this.virtualAddress,
+  });
+}
+
+final _platform = Platform.isLinux ? 'linux' : 'darwin';
+final _ndkDir = 'tools/android-ndk';
+final _llvmSymbolizerBinary =
+    '${_ndkDir}/toolchains/llvm/prebuilt/$_platform-x86_64/bin/llvm-symbolizer';
+final _llvmObjdumpBinary =
+    '${_ndkDir}/toolchains/llvm/prebuilt/$_platform-x86_64/bin/llvm-objdump';
+final _readelfBinary =
+    '${_ndkDir}/toolchains/llvm/prebuilt/$_platform-x86_64/bin/x86_64-linux-android-readelf';
+final _buildIdPattern = RegExp(r'Build ID:\s+(?<id>[0-9a-f]+)');
+final _loadCommandPattern = RegExp(
+    r'^\s+LOAD\s+(?<offset>0x[0-9a-f]+)\s+(?<vma>0x[0-9a-f]+)\s+(?<phys>0x[0-9a-f]+)\s+(?<filesz>0x[0-9a-f]+)\s+(?<memsz>0x[0-9a-f]+)\s+(?<flags>[^0]+)\s+0x[0-9a-f]+\s*$',
+    multiLine: true);
+final _builderPathPattern =
+    RegExp(r'^(?<root>/(b|opt)/s/w/[\w/]+/src)/out/\S+', multiLine: true);
diff --git a/github-label-notifier/symbolizer/lib/parser.dart b/github-label-notifier/symbolizer/lib/parser.dart
new file mode 100644
index 0000000..893eac0
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/parser.dart
@@ -0,0 +1,435 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Logic for extracting crashes from text.
+library symbolizer.parser;
+
+import 'package:meta/meta.dart';
+
+import 'package:symbolizer/model.dart';
+
+/// Returns [true] if the given text is likely to contain a crash.
+bool containsCrash(String text) {
+  return text.contains(_CrashExtractor._androidCrashMarker) ||
+      text.contains(_CrashExtractor._iosCrashMarker);
+}
+
+/// Extract all crashes from the given [text] using [overrides].
+List<Crash> extractCrashes(String text, {SymbolizationOverrides overrides}) =>
+    _CrashExtractor(text: text, overrides: overrides).crashes;
+
+class _CrashExtractor {
+  final List<String> lines;
+  final SymbolizationOverrides overrides;
+
+  final List<Crash> crashes = <Crash>[];
+
+  int lineNo = 0;
+
+  String os;
+  String arch;
+  String mode;
+  String format;
+  List<CrashFrame> frames;
+
+  RegExp logLinePattern;
+  bool collectingFrames = false;
+  int androidMajorVersion;
+
+  _CrashExtractor({@required String text, this.overrides})
+      : lines = text.split(_lineEnding) {
+    if (overrides?.format == 'internal' && overrides?.os != null) {
+      parseAsCustomBacktrace(_internalFramePattern, overrides.os);
+    } else if (overrides?.force == true && overrides.os == 'ios') {
+      parseAsIosBacktrace();
+    } else {
+      processLines();
+    }
+  }
+
+  // 0x00000001003cb6b4(ios_prod_global -main.m:35)main
+  // 0x000000010539eb10(Flutter + 0x00312b10)
+  final _internalFramePattern = RegExp(
+      r'(?<pc>0x[a-f0-9]+)\s*\((?<binary>\S+)\s+(\+\s+(?<offset>0x[a-f0-9]+)|(?<location>[^+][^\)]+))\)(?<symbol>.*)');
+
+  /// Extract only stack traces from the text which match the given regexp.
+  /// Used when 'internal' override is in effect.
+  void parseAsCustomBacktrace(RegExp pattern, String os) {
+    for (; lineNo < lines.length; lineNo++) {
+      final line = lines[lineNo];
+      final frameMatch = pattern.firstMatch(line);
+
+      if (frameMatch == null) {
+        if (collectingFrames) {
+          endCrash();
+        }
+        continue;
+      }
+
+      if (!collectingFrames) {
+        startCrash(os);
+        mode = 'release';
+        format = 'custom';
+        collectingFrames = true;
+      }
+
+      frames.add(CrashFrame.custom(
+        no: frames.length.toString().padLeft(2, '0'),
+        binary: frameMatch.namedGroup('binary'),
+        pc: int.parse(frameMatch.namedGroup('pc')),
+        symbol: frameMatch.namedGroup('symbol'),
+        offset: frameMatch.namedGroup('offset') != null
+            ? int.parse(frameMatch.namedGroup('offset'))
+            : null,
+        location: frameMatch.namedGroup('location'),
+      ));
+    }
+    endCrash();
+  }
+
+  /// Extract only iOS like stack traces from the text. Used when
+  /// 'force ios' override is in effect.
+  void parseAsIosBacktrace() {
+    for (; lineNo < lines.length; lineNo++) {
+      final line = lines[lineNo];
+
+      final frame = parseIosFrame(line);
+
+      if (frame == null) {
+        if (collectingFrames) {
+          endCrash();
+        }
+        continue;
+      }
+
+      // Allow frames that miss offset and instead contain `(Missing)`
+      // instead of symbol name. This can happen in crashalytics output.
+      if (frame.offset == null &&
+          frame.symbol != CrashFrame.crashalyticsMissingSymbol) {
+        continue;
+      }
+
+      if (!collectingFrames) {
+        startCrash('ios');
+        mode = 'release';
+        collectingFrames = true;
+      }
+
+      frames.add(frame);
+    }
+    endCrash();
+  }
+
+  IosCrashFrame parseIosFrame(String line) {
+    final frameMatch = _iosFramePattern.firstMatch(line);
+    if (frameMatch == null) {
+      return null;
+    }
+    var rest = frameMatch.namedGroup('rest').trim();
+    var location = '';
+    if (rest.endsWith(')')) {
+      final open = rest.lastIndexOf('(');
+      if (open > 0) {
+        location = rest.substring(open + 1, rest.length - 2);
+        rest = rest.substring(0, open).trim();
+      }
+    }
+    final offsetMatch = _offsetSuffixPattern.firstMatch(rest);
+    String symbol;
+    int offset;
+    if (offsetMatch != null) {
+      offset = int.parse(offsetMatch.namedGroup('offset'));
+      symbol = offsetMatch.namedGroup('symbol').trim();
+    } else {
+      symbol = rest.trim();
+    }
+
+    return CrashFrame.ios(
+      no: frameMatch.namedGroup('no'),
+      binary: frameMatch.namedGroup('binary'),
+      pc: int.parse(frameMatch.namedGroup('pc')),
+      symbol: symbol,
+      offset: offset,
+      location: location,
+    );
+  }
+
+  void processLines() {
+    for (; lineNo < lines.length; lineNo++) {
+      var line = lines[lineNo];
+
+      // Strip markdown quote.
+      if (line.startsWith('> ')) {
+        line = line.substring(2);
+      }
+
+      // If we have an indication that we are processing raw logcat or flutter
+      // verbose output then strip the prefix characteristic for those log
+      // types.
+      if (logLinePattern != null) {
+        final m = logLinePattern.firstMatch(line);
+        if (m != null) {
+          line = m.namedGroup('rest');
+        } else {
+          // No longer in the raw log output. If we started collecting a crash
+          // flush it and continue handling the line.
+          endCrash();
+        }
+      }
+
+      if (line.isEmpty) {
+        continue;
+      }
+
+      // First check for crash markers.
+      if (line.contains(_androidCrashMarker)) {
+        // Start of the Android crash.
+        startCrash('android');
+        continue;
+      }
+
+      if (line.contains(_iosCrashMarker)) {
+        // Start of the iOS crash.
+        startCrash('ios');
+        continue;
+      }
+
+      final dartvmCrashMatch = _dartvmCrashMarker.firstMatch(line);
+      if (dartvmCrashMatch != null) {
+        startCrash(dartvmCrashMatch.namedGroup('os'));
+        format = 'dartvm';
+        arch = dartvmCrashMatch.namedGroup('arch');
+        if (arch == 'ia32') {
+          arch = 'x86';
+        }
+        continue;
+      }
+
+      if (format == 'dartvm') {
+        if (line.contains(_endOfDumpStackTracePattern)) {
+          endCrash();
+          continue;
+        }
+
+        final frameMatch = _dartvmFramePattern.firstMatch(line);
+        if (frameMatch != null) {
+          frames.add(CrashFrame.dartvm(
+            pc: int.parse(frameMatch.namedGroup('pc')),
+            binary: frameMatch.namedGroup('binary'),
+            offset: int.parse(frameMatch.namedGroup('offset')),
+          ));
+        }
+      }
+
+      if (os == 'android') {
+        // Handle `Build fingerprint: '...'` line.
+        final androidVersion = _androidBuildFingerprintPattern
+            .firstMatch(line)
+            ?.namedGroup('version');
+        if (androidVersion != null) {
+          androidMajorVersion = int.tryParse(androidVersion.split('.').first);
+        }
+
+        // Handle `ABI: '...'` line.
+        final abiMatch = _androidAbiPattern.firstMatch(line);
+        if (abiMatch != null) {
+          arch = abiMatch.namedGroup('abi');
+          if (arch == 'x86_64') {
+            arch = 'x64';
+          }
+          continue;
+        }
+
+        // Handle backtrace: start.
+        if (_backtraceStartPattern.hasMatch(line)) {
+          collectingFrames = true;
+          continue;
+        }
+
+        // If backtrace has started then process line corresponding for a frame.
+        if (collectingFrames) {
+          final frameMatch = _androidFramePattern.firstMatch(line);
+          if (frameMatch != null) {
+            final rest = frameMatch.namedGroup('rest');
+            final buildIdMatch = _buildIdPattern.firstMatch(rest);
+            frames.add(CrashFrame.android(
+              no: frameMatch.namedGroup('no'),
+              pc: int.parse(frameMatch.namedGroup('pc'), radix: 16),
+              binary: frameMatch.namedGroup('binary'),
+              rest: rest,
+              buildId: buildIdMatch?.namedGroup('id'),
+            ));
+          } else {
+            endCrash();
+          }
+        }
+        continue;
+      }
+
+      if (os == 'ios') {
+        // Handle EOF marking the end of crash report.
+        if (line.contains(_eofPattern)) {
+          endCrash();
+          continue;
+        }
+
+        // Handle line that describes App.framework binary image.
+        // We use it as a marker to detect release mode builds.
+        if (line.contains(_appFrameworkPattern)) {
+          mode = 'release';
+          continue;
+        }
+
+        // Handle `Code Type: ...` line.
+        final abiMatch = _iosAbiPattern.firstMatch(line);
+        if (abiMatch != null) {
+          arch = abiMatch.namedGroup('abi') == 'ARM-64' ? 'arm64' : 'arm32';
+          continue;
+        }
+
+        // Handle `Thread ... Crashed:` line
+        if (line.contains(_crashedThreadPattern)) {
+          collectingFrames = true;
+          continue;
+        }
+
+        if (collectingFrames) {
+          final frame = parseIosFrame(line);
+          if (frame != null) {
+            frames.add(frame);
+          } else {
+            collectingFrames = false;
+            // Don't flush the crash yet - we want to read report until the
+            // end and check if it is a release build or not.
+          }
+        }
+
+        continue;
+      }
+    }
+
+    endCrash();
+  }
+
+  void startCrash(String os) {
+    endCrash();
+    this.os = os;
+    frames = <CrashFrame>[];
+    arch = mode = null;
+    logLinePattern = null;
+    collectingFrames = false;
+    format = 'native';
+    androidMajorVersion = null;
+    if (os == 'android') {
+      detectAndroidLogFormat();
+    }
+  }
+
+  void endCrash() {
+    // We are not interested in crashes where we did not collect any frames.
+    if (frames != null && frames.isNotEmpty) {
+      crashes.add(Crash(
+        engineVariant: EngineVariant(
+          os: os,
+          arch: overrides?.arch ?? arch,
+          mode: overrides?.mode ?? mode,
+        ),
+        frames: frames,
+        format: format,
+        androidMajorVersion: androidMajorVersion,
+      ));
+    }
+    frames = null;
+    collectingFrames = false;
+    logLinePattern = null;
+  }
+
+  /// Android crashes might come from `adb logcat` or `flutter run -v`
+  /// output. In which case we need to strip prefix characteristic for
+  /// those.
+  void detectAndroidLogFormat() {
+    final line = lines[lineNo];
+    if (line.contains(_flutterLogPattern)) {
+      logLinePattern = _flutterLogPattern;
+      guessLaunchMode();
+    } else if (line.contains(_deviceLabPattern)) {
+      logLinePattern = _deviceLabPattern;
+      guessLaunchMode();
+    } else if (line.contains(_logcatPattern)) {
+      logLinePattern = _logcatPattern;
+    }
+  }
+
+  void guessLaunchMode() {
+    if (overrides?.mode != null) {
+      return;
+    }
+
+    // Try to look backwards through log lines to determine launch mode.
+    for (var i = lineNo - 1; i >= 0; i--) {
+      final logLineMatch = logLinePattern.firstMatch(lines[i]);
+      if (logLineMatch == null) {
+        break;
+      }
+      final modeMatch =
+          _launchModePattern.firstMatch(logLineMatch.namedGroup('rest'));
+      if (modeMatch != null) {
+        mode = modeMatch.namedGroup('mode');
+        return;
+      }
+    }
+  }
+
+  static final _androidCrashMarker =
+      '*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***';
+
+  static final _iosCrashMarker =
+      RegExp(r'Incident Identifier:\s+([A-F0-9]+-?)+');
+
+  static final _dartvmCrashMarker =
+      RegExp(r'version=.*on "(?<os>android)_(?<arch>arm|arm64|ia32|x64)"\s*$');
+
+  static final _lineEnding = RegExp(r'\r?\n');
+  static final _logcatPattern = RegExp(r'^.*?:(?=$|\s)\s*(?<rest>.*)$');
+  static final _flutterLogPattern =
+      RegExp(r'^\s*\[\s*(\+?\s*\d+\s*(s|ms|h))?\]\s+(?<rest>.*)$');
+  static final _deviceLabPattern = RegExp(
+      r'(\d+-\d+-\d+T\d+:\d+:\d+.\d+: )?(stdout|stderr):\s*\[\s*(\+?\s*\d+\s*(s|ms|h))?\]\s+(?<rest>.*)');
+
+  static final _androidAbiPattern =
+      RegExp(r"^\s*ABI: '(?<abi>x86|x86_64|x64|arm|arm64)'\s*$");
+
+  // Android Compatibility Definition mandates build fingerprint format to be:
+  //
+  //   $(BRAND)/$(PRODUCT)/$(DEVICE):
+  //     $(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
+  //
+  // For our purposes we are only interested in VERSION.RELEASE component of the
+  // fingerprint.
+  //
+  // See https://source.android.com/compatibility/11/android-11-cdd
+  static final _androidBuildFingerprintPattern =
+      RegExp(r"Build fingerprint: '[^:']+:(?<version>[\d\.]+)/[^']*'");
+  static final _backtraceStartPattern = RegExp(r'^\s*backtrace:\s*$');
+  static final _androidFramePattern = RegExp(
+      r'^\s*#(?<no>\d+)\s+pc\s+(?<pc>[0-9a-f]+)\s+(?<binary>[^\s]+)(?<rest>.*)$');
+  static final _buildIdPattern = RegExp(r'\(BuildId: (?<id>[0-9a-f]+)\)');
+  static final _launchModePattern =
+      RegExp(r'^\s*Launching .* on .* in (?<mode>debug|release|profile) mode');
+
+  static final _eofPattern = RegExp(r'^\s*EOF\s*$');
+  static final _appFrameworkPattern = RegExp(
+      r'^\s*0x[a-f0-9]+\s+-\s+0x[a-f0-9]+\s+App\s+arm\w+\s+<[a-f0-9]+>\s+/var/containers');
+  static final _iosAbiPattern = RegExp(r'\s*Code\s+Type:\s+(?<abi>[\-\w]+)\s+');
+  static final _crashedThreadPattern = RegExp(r'^\s*Thread \d+ Crashed:');
+  static final _iosFramePattern = RegExp(
+      r'^\s*(?<no>\d+)\s+(?<binary>\S+)\s+(?<pc>0x[a-f0-9]+)\s+(?<rest>.*)$',
+      unicode: true);
+  static final _offsetSuffixPattern =
+      RegExp(r'^(?<symbol>.*)\s+\+\s+(?<offset>\d+)$');
+
+  static final _endOfDumpStackTracePattern = '-- End of DumpStackTrace';
+  static final _dartvmFramePattern = RegExp(
+      r'(^|\s+)pc\s+(?<pc>0x[a-f0-9]+)\s+fp\s+(?<fp>0x[a-f0-9]+)\s+(?<binary>[^\s+]+)\+(?<offset>0x[a-f0-9]+)');
+}
diff --git a/github-label-notifier/symbolizer/lib/server.dart b/github-label-notifier/symbolizer/lib/server.dart
new file mode 100644
index 0000000..6b9b897
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/server.dart
@@ -0,0 +1,75 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// HTTP API for [symbolizer.bot] and [symbolizer.symbolizer] functionality.
+library symbolizer.server;
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:github/github.dart';
+import 'package:github/hooks.dart';
+import 'package:logging/logging.dart';
+import 'package:meta/meta.dart';
+import 'package:pedantic/pedantic.dart';
+
+import 'package:symbolizer/bot.dart';
+import 'package:symbolizer/symbolizer.dart';
+
+final _log = Logger('server');
+
+typedef _RequestHandler = Future<Object> Function(Map<String, dynamic> request);
+
+Future<void> serve(Object address, int port,
+    {@required Symbolizer symbolizer, @required Bot bot}) async {
+  final handlers = <String, _RequestHandler>{
+    '/symbolize': (issue) => symbolizer.symbolize(issue['body']),
+    '/command': (event) async {
+      final repoOrgMember = const {'MEMBER', 'OWNER'}
+          .contains(event['comment']['author_association']);
+      final commentEvent = IssueCommentEvent.fromJson(event);
+      final repo = RepositorySlug.full(event['repository']['full_name']);
+      await bot.executeCommand(repo, commentEvent.issue, commentEvent.comment,
+          authorized: repoOrgMember);
+      return {'status': 'ok'};
+    },
+  };
+
+  // Start the server.
+  final server = await HttpServer.bind(address, port);
+  _log.info('Listening on ${server.address}:${server.port}');
+
+  // Intentionally not processing requests in parallel to avoid racing
+  // in symbol cache.
+  await for (HttpRequest request in server) {
+    _log.info('Incoming request: ${request.method} ${request.requestedUri}');
+    final handler = handlers[request.requestedUri.path];
+    if (request.method != 'POST' || handler == null) {
+      request.response
+        ..statusCode = 404
+        ..write('Not found');
+      unawaited(request.response.close());
+      continue;
+    }
+    try {
+      final requestObj =
+          await utf8.decoder.bind(request).transform(json.decoder).first;
+      final responseJson = jsonEncode(await handler(requestObj));
+      request.response
+        ..statusCode = HttpStatus.ok
+        ..headers.add(HttpHeaders.contentTypeHeader, 'application/json')
+        ..write(responseJson);
+    } catch (e, st) {
+      request.response
+        ..statusCode = HttpStatus.internalServerError
+        ..headers.add(HttpHeaders.contentTypeHeader, 'application/json')
+        ..write(jsonEncode({
+          'status': 'error',
+          'message': e.toString(),
+          'stacktrace': st.toString(),
+        }));
+    }
+    unawaited(request.response.close());
+  }
+}
diff --git a/github-label-notifier/symbolizer/lib/symbolizer.dart b/github-label-notifier/symbolizer/lib/symbolizer.dart
new file mode 100644
index 0000000..f66c5c5
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/symbolizer.dart
@@ -0,0 +1,713 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Symbolizer functionality
+library symbolizer.symbolizer;
+
+import 'dart:async';
+import 'dart:io';
+
+import 'package:http/http.dart' as http;
+import 'package:logging/logging.dart';
+import 'package:meta/meta.dart';
+import 'package:path/path.dart' as p;
+import 'package:github/github.dart';
+
+import 'package:symbolizer/model.dart';
+import 'package:symbolizer/ndk.dart';
+import 'package:symbolizer/parser.dart';
+import 'package:symbolizer/symbols.dart';
+
+final _log = Logger('symbolizer');
+
+class Symbolizer {
+  final SymbolsCache symbols;
+  final Ndk ndk;
+  final GitHub github;
+
+  Symbolizer({
+    @required this.symbols,
+    @required this.ndk,
+    @required this.github,
+  });
+
+  /// Process the given [text] to find all crashes and symbolize them.
+  Future<List<SymbolizationResult>> symbolize(String text,
+      {SymbolizationOverrides overrides}) async {
+    final crashes = extractCrashes(text, overrides: overrides);
+    if (crashes.isEmpty) {
+      return [];
+    }
+
+    // First compute engine hash to use for symbolization.
+    String engineHash;
+    try {
+      engineHash = await _guessEngineHash(text, overrides);
+    } catch (e, st) {
+      return _failedToSymbolizeAll(
+          crashes, SymbolizationNoteKind.exceptionWhileGettingEngineHash,
+          error: '$e\n$st');
+    }
+    if (engineHash == null) {
+      return _failedToSymbolizeAll(
+          crashes, SymbolizationNoteKind.unknownEngineHash);
+    }
+
+    return await Future.wait(
+        crashes.map((crash) => _symbolizeCrash(crash, engineHash, overrides)));
+  }
+
+  Future<String> _guessEngineHash(
+      String text, SymbolizationOverrides overrides) async {
+    // Try to establish engine hash based on the content.
+    var engineHash = overrides?.engineHash ??
+        _reEngineHash.firstMatch(text)?.namedGroup('shortHash');
+    if (engineHash == null && overrides?.flutterVersion != null) {
+      engineHash =
+          await _engineHashFromFlutterVersion(overrides.flutterVersion);
+    }
+    if (engineHash != null) {
+      // Try to expand short hash into full hash.
+      final engineCommit = await github.repositories
+          .getCommit(RepositorySlug('flutter', 'engine'), engineHash);
+      engineHash = engineCommit.sha;
+    }
+    if (engineHash == null) {
+      // Try to establish engineHash based on Flutter version
+      final m = _reFlutterVersion.firstMatch(text);
+      if (m != null && m.namedGroup('channel') != 'master') {
+        // Try to use version tag.
+        final tag = m.namedGroup('version');
+        engineHash = await _engineHashFromFlutterVersion(tag);
+      }
+    }
+    return engineHash;
+  }
+
+  Future<String> _engineHashFromFlutterVersion(String version) async {
+    final response = await http.get(
+        'https://raw.githubusercontent.com/flutter/flutter/${version}/bin/internal/engine.version');
+    if (response.statusCode == HttpStatus.ok) {
+      return response.body.trim();
+    }
+    return null;
+  }
+
+  Future<SymbolizationResult> _symbolizeCrashWith(
+      Crash crash, EngineBuild engineBuild) async {
+    try {
+      final symbolsDir = await symbols.get(engineBuild);
+      return await _symbolizeCrashWithGivenSymbols(
+          crash, symbolsDir, engineBuild);
+    } catch (e, st) {
+      return _failedToSymbolize(
+          crash, SymbolizationNoteKind.exceptionWhileSymbolizing,
+          error: '{$engineBuild} $e\n$st');
+    }
+  }
+
+  Future<SymbolizationResult> _symbolizeCrash(
+      Crash crash, String engineHash, SymbolizationOverrides overrides) async {
+    // Apply overrides
+    if (crash.engineVariant.arch == null) {
+      return _failedToSymbolize(crash, SymbolizationNoteKind.unknownAbi);
+    }
+
+    EngineBuild engineBuild;
+
+    final buildId = _findBuildIdInFrames(crash.frames);
+    // Even if buildId is available we don't use it for matching
+    // if mode was found heuristically or was specified through overrides
+    // already.
+    if (crash.engineVariant.mode != null ||
+        overrides?.mode != null ||
+        buildId == null) {
+      // Currently on iOS we only have symbols for release builds.
+      if (crash.engineVariant.os == 'ios') {
+        if (crash.engineVariant.mode != 'release') {
+          return _failedToSymbolize(
+              crash, SymbolizationNoteKind.noSymbolsAvailableOnIos);
+        }
+      }
+
+      engineBuild = EngineBuild(
+        engineHash: engineHash,
+        variant: crash.engineVariant.copyWith(
+            mode: crash.engineVariant.mode ?? overrides?.mode ?? 'release'),
+      );
+
+      // Note: on iOS build ids (LC_UUID) don't seem to match between
+      // archived dSYMs and what users report, so we can't rely on them
+      // for matching dSYMs to crash reports.
+    } else {
+      try {
+        engineBuild = await symbols.findVariantByBuildId(
+            variant: crash.engineVariant,
+            engineHash: engineHash,
+            buildId: buildId);
+      } catch (e) {
+        return _failedToSymbolize(
+            crash, SymbolizationNoteKind.exceptionWhileLookingByBuildId,
+            error: '(${buildId}) $e');
+      }
+    }
+
+    var result = await _symbolizeCrashWith(crash, engineBuild);
+
+    if (result.symbolized != null &&
+        buildId == null &&
+        overrides?.mode == null &&
+        (crash.engineVariant.mode == null ||
+            crash.engineVariant.mode != 'release')) {
+      result = result
+          .withNote(SymbolizationNoteKind.defaultedToReleaseBuildIdUnavailable);
+    }
+
+    // We might have used wrong symbols for symbolization (because we were
+    // forced or because our heuristics failed for some reason).
+    if (buildId != null) {
+      final symbolsDir = await symbols.get(engineBuild);
+      final engineBuildId =
+          await ndk.getBuildId(p.join(symbolsDir, 'libflutter.so'));
+      if (engineBuildId != buildId) {
+        result = result.withNote(SymbolizationNoteKind.buildIdMismatch,
+            'Backtrace refers to ${buildId} but we used engine with ${engineBuildId}');
+      }
+    }
+
+    return result;
+  }
+
+  static String _findBuildIdInFrames(List<CrashFrame> frames) => frames
+      .whereType<AndroidCrashFrame>()
+      .firstWhere(
+          (frame) =>
+              frame.binary.endsWith('libflutter.so') && frame.buildId != null,
+          orElse: () => null)
+      ?.buildId;
+
+  Future<SymbolizationResult> _symbolizeCrashWithGivenSymbols(
+      Crash crash, String symbolsDir, EngineBuild build) {
+    final result =
+        SymbolizationResult(engineBuild: build, crash: crash, symbolized: null);
+    if (crash.format == 'dartvm') {
+      return _symbolizeDartvmFrames(
+        result,
+        crash.frames.cast<DartvmCrashFrame>(),
+        crash.engineVariant.arch,
+        symbolsDir,
+      );
+    } else if (crash.format == 'custom') {
+      return _symbolizeCustomFrames(
+        result,
+        crash.frames.cast<CustomCrashFrame>(),
+        crash.engineVariant.arch,
+        build,
+        symbolsDir,
+      );
+    } else if (crash.engineVariant.os == 'android') {
+      return _symbolizeAndroidFrames(
+        result,
+        crash.frames.cast<AndroidCrashFrame>(),
+        crash.engineVariant.arch,
+        symbolsDir,
+        crash.androidMajorVersion,
+      );
+    } else {
+      return _symbolizeIosFrames(
+        result,
+        crash.frames.cast<IosCrashFrame>(),
+        crash.engineVariant.arch,
+        build,
+        symbolsDir,
+      );
+    }
+  }
+
+  Future<SymbolizationResult> _symbolizeGeneric<FrameType extends CrashFrame>({
+    @required SymbolizationResult result,
+    @required List<FrameType> frames,
+    @required String arch,
+    @required String object,
+    @required bool Function(FrameType) shouldSymbolize,
+    @required int Function(FrameType) getRelativePC,
+    @required FutureOr<int> Function(Iterable<FrameType>) computePCBias,
+    @required String Function(FrameType) frameSuffix,
+    @required bool shouldAdjustInnerPCs,
+  }) async {
+    _log.info('Symbolizing using ${object}');
+
+    final worklist = <int>{};
+
+    // First collect Flutter Engine frames.
+    final binaryName = p.basename(object);
+    for (var i = 0; i < frames.length; i++) {
+      if (frames[i].binary.endsWith(binaryName) && shouldSymbolize(frames[i])) {
+        worklist.add(i);
+      }
+    }
+
+    final symbolized = <int, String>{};
+    if (worklist.isNotEmpty) {
+      final vmaBias = await computePCBias(worklist.map((i) => frames[i]));
+      symbolized.addAll(Map.fromIterables(
+          worklist,
+          await ndk.symbolize(
+              object: object,
+              arch: arch,
+              addresses: worklist
+                  .map((i) {
+                    return getRelativePC(frames[i]) +
+                        vmaBias +
+                        (shouldAdjustInnerPCs && i > 0 ? -1 : 0);
+                  })
+                  .map(_asHex)
+                  .toList())));
+    }
+
+    // Assemble the result.
+    final pcSize = _pointerSize(arch);
+    final buf = StringBuffer();
+    for (var i = 0; i < frames.length; i++) {
+      final frame = frames[i];
+      final prefix =
+          '#${i.toString().padLeft(2, '0')} ${_addrHex(frame.pc, pcSize)} ${_shortBinaryName(frame.binary)}';
+      buf.write(prefix);
+      buf.writeln(frameSuffix(frame));
+      if (worklist.contains(i)) {
+        final indent = ' ' * (prefix.length + 1);
+        for (var line in symbolized[i].split('\n')) {
+          buf.write(indent);
+          buf.writeln(line);
+        }
+      }
+    }
+
+    return result.copyWith(symbolized: buf.toString());
+  }
+
+  Future<SymbolizationResult> _symbolizeAndroidFrames(
+    SymbolizationResult result,
+    List<AndroidCrashFrame> frames,
+    String arch,
+    String symbolsDir,
+    int androidMajorVersion,
+  ) async {
+    final flutterSo = p.join(symbolsDir, 'libflutter.so');
+    return _symbolizeGeneric<AndroidCrashFrame>(
+      result: result,
+      frames: frames,
+      arch: arch,
+      object: flutterSo,
+      shouldSymbolize: (_) => true,
+      getRelativePC: (frame) => frame.pc,
+      shouldAdjustInnerPCs: false, // Android unwinder already adjusted it.
+      computePCBias: (frames) async {
+        if ((androidMajorVersion ?? 0) >= 11) {
+          return 0;
+        }
+        // Prior to Android 11 backtraces printed by debuggerd contained PCs
+        // which can't be directly used for symbolization. Very old versions
+        // of Android printed offsets into RX mapping, while newer versions
+        // printed ELF file offsets. We try to differentiate between these two
+        // situations by checking if any PCs are outside of .text section range.
+        // In both cases we can't directly use this PC for symbolization because
+        // it does not necessarily match VMAs used in the ELF file (which is
+        // what llvm-symbolizer would need for symbolization).
+        final textSection = await ndk.getTextSectionInfo(flutterSo);
+        final textStart = textSection.fileOffset;
+        final textEnd = textSection.fileOffset + textSection.fileSize;
+        final likelySectionOffset =
+            !frames.every((f) => textStart <= f.pc && f.pc < textEnd);
+        return likelySectionOffset
+            ? (textSection.virtualAddress & ~0xfff)
+            : (textSection.virtualAddress - textSection.fileOffset);
+      },
+      frameSuffix: (frame) => ' ${frame.rest.trimLeft()}',
+    );
+  }
+
+  Future<SymbolizationResult> _symbolizeDartvmFrames(SymbolizationResult result,
+      List<DartvmCrashFrame> frames, String arch, String symbolsDir) async {
+    final flutterSo = p.join(symbolsDir, 'libflutter.so');
+    return _symbolizeGeneric(
+      result: result,
+      frames: frames,
+      arch: arch,
+      object: flutterSo,
+      shouldSymbolize: (_) => true,
+      getRelativePC: (frame) => frame.offset,
+      shouldAdjustInnerPCs: true,
+      computePCBias: (frames) async {
+        // For now we assume that we only get Dart VM crash stacks from Android.
+        //
+        // There we get output like libflutter.so+offset where offset is
+        // PC minus base of libflutter.so (as returned by dladdr), which
+        // corresponds to the address of the first page mapped from ELF file.
+        //
+        // Important thing to note here is that RX mapping would use aligned
+        // file offset (textSection.fileOffset & ~pageMask). This might increase
+        // the distance between SO base and PC by 1 page if testSection.fileOffset
+        // is not aligned:
+        //
+        //   RO             RX      PC
+        //   [             ][       *      ]
+        //   |              |
+        //   B              B + fileOffset
+        //   0
+        //
+        // If fileOffset is misaligned then subtracting B from PC does not yield
+        // file offset corresponding to the PC, but rather file offset plus
+        // pageSize, so we need to accomodate for that in VMA adjustment.
+        const pageSize = 4096;
+        const pageMask = pageSize - 1;
+
+        final textSection = await ndk.getTextSectionInfo(flutterSo);
+        final loadBias = textSection.virtualAddress - textSection.fileOffset;
+        return loadBias -
+            (((textSection.fileOffset & pageMask) + pageMask) & ~pageMask);
+      },
+      frameSuffix: (frame) => '+${_asHex(frame.offset)}',
+    );
+  }
+
+  /// Pattern for extracting information from ARM64 objdump output.
+  static final _objdumpPattern =
+      RegExp(r'^\s*(?<addr>[a-f0-9]+):\s+([a-f0-9]{2}\s+){4}(?<op>\w+)');
+
+  /// Extract information about calls (branch-link instruction) locations
+  /// in the binary.
+  Future<_CallLocations> _determineCallLocations(EngineBuild build) async {
+    if (build.variant.arch != 'arm64') {
+      return null;
+    }
+
+    final flutterSo = await symbols.getEngineBinary(build);
+    if (flutterSo == null) {
+      return null;
+    }
+
+    int startAddr, endAddr;
+    final isCallAt = <bool>[];
+    await for (var line
+        in ndk.objdump(object: flutterSo, arch: build.variant.arch)) {
+      final m = _objdumpPattern.firstMatch(line);
+      if (m == null) continue;
+
+      final addr = int.parse(m.namedGroup('addr'), radix: 16);
+      startAddr ??= addr;
+      endAddr = addr;
+      final op = m.namedGroup('op');
+      isCallAt.add(op.startsWith('bl'));
+    }
+    final codeSize = endAddr - startAddr + 4;
+    if (codeSize != isCallAt.length * 4) {
+      // Something went wrong.
+      return null;
+    }
+
+    return _CallLocations(startAddr, isCallAt);
+  }
+
+  /// Try to guess load base for flutter engine shared object using
+  /// information about possible call locations in the binary and the
+  /// list of return addresses in the backtrace.
+  ///
+  /// We are going to look through the binary trying to find call locations
+  /// which have the same relative offsets to each other as the given pcs.
+  /// Each such group gives us potential load base.
+  Future<_LoadBase> _tryFindLoadBase(
+      EngineBuild build, List<int> retAddrs) async {
+    _log.info('looking for load base of ${build} based on ${retAddrs}');
+    if (retAddrs.length < 2) {
+      return null; // Need at least two retAddrs.
+    }
+
+    // We don't expect any misaligned retAddrs, but some Crashlytics reports
+    // contain such. Give up for now.
+    if (retAddrs.any((e) => e & 3 != 0)) {
+      return null;
+    }
+
+    final calls = await _determineCallLocations(build);
+    if (calls == null) {
+      return null;
+    }
+
+    var loadBase = _tryFindLoadBaseImpl(build, retAddrs, calls);
+    if (loadBase != null) {
+      return _LoadBase(loadBase: loadBase, pcAdjusted: false);
+    }
+
+    // Maybe unwinder already adjusted return addressed by -4.
+    loadBase = _tryFindLoadBaseImpl(
+        build, retAddrs.map((pc) => pc + 4).toList(), calls);
+    if (loadBase != null) {
+      return _LoadBase(loadBase: loadBase, pcAdjusted: true);
+    }
+
+    return null;
+  }
+
+  int _tryFindLoadBaseImpl(
+      EngineBuild build, List<int> retAddrs, _CallLocations calls) {
+    const arm64InstrSize = 4;
+    const arm64InstrShift = 2;
+    const pageSize = 0x1000;
+    const pageMask = pageSize - 1;
+
+    final retAddr = retAddrs.first;
+    final possibleBases = <int>[];
+
+    // Look through the binary for all calls such that pc - callAddr (which can be
+    // computed as `calls.startAddr + callIdx * arm64InstrSize`) is page aligned
+    // (this difference yields us possible base).
+    // We start by selecting base in such a way that the retAddr falls on the
+    // first page of the .text section and then start moving base down in
+    // pageSize increments.
+    final callVma = retAddr - arm64InstrSize - calls.startAddr;
+    for (var callIdx = (callVma & pageMask) >> arm64InstrShift,
+            base = callVma & ~pageMask;
+        callIdx < calls.size && base >= 0;
+        callIdx += pageSize >> arm64InstrShift, base -= pageSize) {
+      if (calls._isCallAt[callIdx]) {
+        if (retAddrs
+            .every((pc) => calls.isCallAt(pc - arm64InstrSize - base))) {
+          // Possible base: pc - arm64InstrSize - base hits call in the
+          // binary for all retAddrs.
+          possibleBases.add(base);
+        }
+      }
+    }
+
+    // Single possible base found - return it.
+    if (possibleBases.length == 1) {
+      _log.info('found load base of ${build} based on ${retAddrs}: '
+          '${possibleBases.first}');
+      return possibleBases.first;
+    }
+
+    // Either no bases or more than a single possibility found.
+    _log.info(
+        'found ${possibleBases.isEmpty ? 'no' : 'multiple'} potential load '
+        'bases of ${build} based on ${retAddrs}: ${possibleBases}');
+    return null;
+  }
+
+  Future<SymbolizationResult> _symbolizeIosFrames(
+      SymbolizationResult result,
+      List<IosCrashFrame> frames,
+      String arch,
+      EngineBuild build,
+      String symbolsDir) async {
+    final object =
+        p.join(symbolsDir, 'Flutter.dSYM/Contents/Resources/DWARF/Flutter');
+
+    // Returns [true] if the given frame is a frame for Flutter
+    // engine binary which misses an offset.
+    bool isFrameMissingOffset(IosCrashFrame frame) {
+      return frame.offset == null &&
+          frame.binary == 'Flutter' &&
+          frame.symbol == CrashFrame.crashalyticsMissingSymbol;
+    }
+
+    var adjustInnerPCs = true;
+
+    // If there are frames with missing offsets found try to guess
+    // load base using a heuristic based on all return addresses from the
+    // backtrace.
+    final framesWithoutOffsets = frames.where(isFrameMissingOffset).toList();
+    if (framesWithoutOffsets.isNotEmpty) {
+      final loadBase = await _tryFindLoadBase(
+          build,
+          framesWithoutOffsets
+              .where((frame) => int.parse(frame.no) > 0)
+              .map((frame) => frame.pc)
+              .toSet()
+              .toList());
+      if (loadBase != null) {
+        // Success: managed to find a single possiblity. Compute relative pcs
+        // using this loadBase and add a note to the symbolization result.
+        adjustInnerPCs = !loadBase.pcAdjusted;
+        result = result.withNote(SymbolizationNoteKind.loadBaseDetected,
+            _addrHex(loadBase.loadBase, _pointerSize(build.variant.arch)));
+        frames = frames.map((frame) {
+          if (isFrameMissingOffset(frame)) {
+            return frame.copyWith(
+              offset: frame.pc - loadBase.loadBase,
+              symbol: 'Flutter',
+            );
+          }
+          return frame;
+        }).toList();
+      }
+    }
+
+    return _symbolizeGeneric<IosCrashFrame>(
+      result: result,
+      frames: frames,
+      arch: arch,
+      object: object,
+      shouldSymbolize: (frame) =>
+          frame.symbol == 'Flutter' || frame.symbol.startsWith('0x'),
+      shouldAdjustInnerPCs: adjustInnerPCs,
+      getRelativePC: (frame) => frame.offset,
+      computePCBias: (frames) => 0,
+      frameSuffix: (frame) => [
+        '',
+        frame.symbol,
+        if (frame.offset != null) '+',
+        if (frame.offset != null) frame.offset,
+        if (frame.location.isNotEmpty) '(${frame.location.trimLeft()})',
+      ].join(' '),
+    );
+  }
+
+  Future<SymbolizationResult> _symbolizeCustomFrames(
+      SymbolizationResult result,
+      List<CustomCrashFrame> frames,
+      String arch,
+      EngineBuild build,
+      String symbolsDir) async {
+    // For now we assuem
+    final object = p.join(
+        symbolsDir,
+        build.variant.os == 'ios'
+            ? 'Flutter.dSYM/Contents/Resources/DWARF/Flutter'
+            : 'libflutter.so');
+
+    // Returns [true] if the given frame is a frame for Flutter
+    // engine binary which misses an offset.
+    bool isFrameMissingOffset(CustomCrashFrame frame) {
+      return /*frame.offset == null &&*/ frame.binary == 'Flutter';
+    }
+
+    var adjustInnerPCs = true;
+
+    // If there are frames with missing offsets found try to guess
+    // load base using a heuristic based on all return addresses from the
+    // backtrace.
+    final framesWithoutOffsets = frames.where(isFrameMissingOffset).toList();
+    if (framesWithoutOffsets.isNotEmpty) {
+      final loadBase = await _tryFindLoadBase(
+          build,
+          framesWithoutOffsets
+              .where((frame) => int.parse(frame.no) > 0)
+              .map((frame) => frame.pc)
+              .toSet()
+              .toList());
+      if (loadBase != null) {
+        // Success: managed to find a single possiblity. Compute relative pcs
+        // using this loadBase and add a note to the symbolization result.
+        adjustInnerPCs = !loadBase.pcAdjusted;
+        result = result.withNote(SymbolizationNoteKind.loadBaseDetected,
+            _addrHex(loadBase.loadBase, _pointerSize(build.variant.arch)));
+        frames = frames.map((frame) {
+          if (isFrameMissingOffset(frame)) {
+            return frame.copyWith(
+              offset: frame.pc - loadBase.loadBase,
+              symbol: 'Flutter',
+            );
+          }
+          return frame;
+        }).toList();
+      }
+    }
+
+    return _symbolizeGeneric<CustomCrashFrame>(
+      result: result,
+      frames: frames,
+      arch: arch,
+      object: object,
+      shouldSymbolize: (frame) => true,
+      shouldAdjustInnerPCs: adjustInnerPCs,
+      getRelativePC: (frame) => frame.offset,
+      computePCBias: (frames) => 0,
+      frameSuffix: (frame) => [
+        '',
+        if (frame.symbol != null && frame.symbol.isNotEmpty)
+          frame.symbol
+        else
+          frame.binary,
+        if (frame.offset != null) '+',
+        if (frame.offset != null) frame.offset,
+        if (frame.location != null) frame.location.trimLeft(),
+      ].join(' '),
+    );
+  }
+}
+
+final _appBinaryPattern = RegExp(r'^/data/app/(~~[^/]+/)?[^/]+/(?<name>.*)$');
+String _shortBinaryName(String binary) {
+  final m = _appBinaryPattern.firstMatch(binary);
+  if (m != null) {
+    return '<...>/${m.namedGroup('name')}';
+  }
+  return binary;
+}
+
+int _pointerSize(String arch) {
+  switch (arch) {
+    case 'arm64':
+    case 'x64':
+      return 8 * 2;
+    default:
+      return 4 * 2;
+  }
+}
+
+String _addrHex(int v, int pointerSize) =>
+    v.toRadixString(16).padLeft(pointerSize, '0');
+
+String _asHex(int v) => '0x${v.toRadixString(16)}';
+
+List<SymbolizationResult> _failedToSymbolizeAll(
+        List<Crash> crashes, SymbolizationNoteKind note, {Object error}) =>
+    crashes
+        .map((crash) => _failedToSymbolize(crash, note, error: error))
+        .toList();
+
+SymbolizationResult _failedToSymbolize(Crash crash, SymbolizationNoteKind note,
+        {Object error}) =>
+    SymbolizationResult(
+      crash: crash,
+      engineBuild: null,
+      symbolized: null,
+      notes: [SymbolizationNote(kind: note, message: error?.toString())],
+    );
+
+final _reEngineHash =
+    RegExp(r'(• Engine|Engine •) revision (?<shortHash>[a-f0-9]+)');
+final _reFlutterVersion = RegExp(
+    r'Flutter \(Channel (?<channel>master|dev|beta|stable), (?<version>[^,]+),');
+
+/// Information about call locations within the flutter engine binary.
+/// Used to heuristically guess load base for flutter engine when it is
+/// not available in the output.
+///
+/// Currently heuristics only work on ARM64, which allows us to assume
+/// fixed instruction size (4 bytes).
+class _CallLocations {
+  /// Base VMA for the .text section.
+  final int startAddr;
+
+  /// Contains [true] if instruction with the given index is a branch-link (bl).
+  final List<bool> _isCallAt;
+
+  _CallLocations(this.startAddr, this._isCallAt);
+
+  int get size => _isCallAt.length;
+
+  bool isCallAt(int addr) {
+    if (addr < startAddr) return false;
+    final i = (addr - startAddr) >> 2;
+    return i < size && _isCallAt[i];
+  }
+}
+
+class _LoadBase {
+  final int loadBase;
+  final bool pcAdjusted;
+  _LoadBase({this.loadBase, this.pcAdjusted});
+}
diff --git a/github-label-notifier/symbolizer/lib/symbols.dart b/github-label-notifier/symbolizer/lib/symbols.dart
new file mode 100644
index 0000000..be82d9f
--- /dev/null
+++ b/github-label-notifier/symbolizer/lib/symbols.dart
@@ -0,0 +1,298 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Utilities for downloading and locally caching symbol files.
+library symbolizer.symbols;
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:logging/logging.dart';
+import 'package:meta/meta.dart';
+import 'package:path/path.dart' as p;
+
+import 'package:symbolizer/model.dart';
+import 'package:symbolizer/ndk.dart';
+
+final _log = Logger('symbols');
+
+/// Local cache of symbol files downloaded from Cloud Storage bucket.
+class SymbolsCache {
+  final Ndk _ndk;
+
+  /// Local path at which this cache is located.
+  final String _path;
+
+  /// Number of entries in the cache after which we will start trying to
+  /// evict all entries which were not touched for longer than
+  /// [evictionThreshold].
+  final int _sizeThreshold;
+
+  /// Threshold past which an unused entry in the cache is considered evictable.
+  final Duration _evictionThreshold;
+
+  /// Map describing when symbols for the given [EngineBuild] were used
+  /// last time.
+  final Map<String, int> _lastUsedTimestamp = {};
+
+  /// Cache mapping Build-Id's values to corresponding engine builds.
+  final Map<String, EngineBuild> _buildIdCache = {};
+
+  /// Pending downloads by [EngineBuild].
+  final Map<String, Future<String>> _downloads = {};
+
+  /// Constructs cache at the given [path], which is assumed to be a directory.
+  /// If destination does not exist it will be created.
+  SymbolsCache({
+    @required Ndk ndk,
+    @required String path,
+    int sizeThreshold = 20,
+    Duration evictionThreshold = const Duration(minutes: 5),
+  })  : _ndk = ndk,
+        _path = path,
+        _sizeThreshold = sizeThreshold,
+        _evictionThreshold = evictionThreshold {
+    if (!Directory(path).existsSync()) {
+      Directory(path).createSync();
+    }
+    _loadState();
+  }
+
+  /// If necessary download symbols for the given [build] and return path to
+  /// the folder containing them.
+  Future<String> get(EngineBuild build) => _get(build, '', _downloadSymbols);
+
+  /// If necessary download engine binary (libflutter.so or Flutter) for the
+  /// given build and return path to the binary itself.
+  Future<String> getEngineBinary(EngineBuild build) async {
+    final dir = await _get(build, 'libflutter', _downloadEngine);
+    return p.join(dir, p.basename(_libflutterPath(build)));
+  }
+
+  /// Download an artifact from Cloud Storage using the given [downloader] and
+  /// cache result in the path using the given [suffix].
+  Future<String> _get(
+    EngineBuild build,
+    String suffix,
+    Future<void> Function(Directory, EngineBuild) downloader,
+  ) {
+    final cacheDir = _cacheDirectoryFor(build, suffix: suffix);
+    if (!_downloads.containsKey(cacheDir)) {
+      _downloads[cacheDir] = _getImpl(cacheDir, build, downloader);
+      _downloads[cacheDir].then((_) => _downloads.remove(cacheDir));
+    }
+    return _downloads[cacheDir];
+  }
+
+  /// Given the [engineHash] and [EngineVariant] which specifies OS and
+  /// architecture look at symbols for all possible build modes and
+  /// find the one matching the given [buildId].
+  ///
+  /// Currently only used for Android symbols because on iOS LC_UUID
+  /// is unreliable.
+  Future<EngineBuild> findVariantByBuildId({
+    @required String engineHash,
+    @required EngineVariant variant,
+    @required String buildId,
+  }) async {
+    _log.info('looking for ${buildId} among ${variant} engines');
+    if (variant.os != 'android') {
+      throw ArgumentError(
+          'LC_UUID is unreliable on iOS and can not be used for mode matching');
+    }
+
+    // Check if we already have a match in the Build-Id cache.
+    if (_buildIdCache.containsKey(buildId)) {
+      final build = _buildIdCache[buildId];
+      if (build.variant.os == variant.os &&
+          build.variant.arch == variant.arch) {
+        return build;
+      }
+    }
+
+    for (var potentialVariant in EngineVariant.allModesFor(variant)) {
+      final engineBuild =
+          EngineBuild(engineHash: engineHash, variant: potentialVariant);
+      final dir = await get(engineBuild);
+      final thisBuildId = await _ndk.getBuildId(p.join(dir, 'libflutter.so'));
+      _buildIdCache[thisBuildId] = engineBuild;
+      if (thisBuildId == buildId) {
+        return engineBuild;
+      }
+    }
+    throw 'Failed to find build with matching buildId (${buildId})';
+  }
+
+  File get _cacheStateFile => File(p.join(_path, 'cache.json'));
+
+  void _loadState() {
+    if (!_cacheStateFile.existsSync()) return;
+
+    final Map<String, dynamic> cacheState =
+        jsonDecode(_cacheStateFile.readAsStringSync());
+    final timestamps = cacheState['lastUsedTimestamp'] as List<dynamic>;
+    _lastUsedTimestamp.clear();
+    for (var i = 0; i < timestamps.length; i += 2) {
+      _lastUsedTimestamp[timestamps[i]] = timestamps[i + 1];
+    }
+    _buildIdCache.addAll((cacheState['buildIdCache'] as Map<String, dynamic>)
+        .map((key, value) => MapEntry(key, EngineBuild.fromJson(value))));
+  }
+
+  void _saveState() {
+    _cacheStateFile.writeAsStringSync(jsonEncode({
+      'lastUsedTimestamp':
+          _lastUsedTimestamp.entries.expand((e) => [e.key, e.value]).toList(),
+      'buildIdCache': _buildIdCache
+    }));
+  }
+
+  String _cacheDirectoryFor(EngineBuild build, {String suffix = ''}) =>
+      'symbols-cache/${build.engineHash}-${build.variant.toArtifactPath()}'
+      '${suffix.isNotEmpty ? '-' : ''}${suffix}';
+
+  Future<String> _getImpl(String targetDir, EngineBuild build,
+      Future<void> Function(Directory, EngineBuild) downloader) async {
+    final dir = Directory(targetDir);
+    if (dir.existsSync()) {
+      _touch(dir.path);
+      return dir.path;
+    }
+
+    // Make sure we have some space.
+    _evictOldEntriesIfNecessary();
+    _log.info('downloading ${targetDir} for ${build}');
+
+    // Download symbols into a temporary directory, once we successfully
+    // unpack them we will rename this directory.
+    final tempDir = await Directory.systemTemp.createTemp();
+    try {
+      await downloader(tempDir, build);
+      // Now move the directory into the cache.
+      final renamed = await tempDir.rename(dir.path);
+      if (build.variant.os == 'android') {
+        // Fetch Build-Id from the library and add it to the cache.
+        final buildId =
+            await _ndk.getBuildId(p.join(renamed.path, 'libflutter.so'));
+        _buildIdCache[buildId] = build;
+      }
+      _touch(renamed.path);
+      return renamed.path;
+    } finally {
+      if (tempDir.existsSync()) {
+        tempDir.deleteSync(recursive: true);
+      }
+    }
+  }
+
+  Future<void> _downloadSymbols(Directory tempDir, EngineBuild build) async {
+    final symbolsFile =
+        build.variant.os == 'ios' ? 'Flutter.dSYM.zip' : 'symbols.zip';
+
+    await _run('gsutil', [
+      'cp',
+      'gs://flutter_infra/flutter/${build.engineHash}/${build.variant.toArtifactPath()}/${symbolsFile}',
+      p.join(tempDir.path, symbolsFile)
+    ]);
+    await _run('unzip', [symbolsFile], workingDirectory: tempDir.path);
+
+    // Delete downloaded ZIP file.
+    await File(p.join(tempDir.path, symbolsFile)).delete();
+  }
+
+  Future<void> _downloadEngine(Directory tempDir, EngineBuild build) async {
+    final artifactsFile = 'artifacts.zip';
+    await _run('gsutil', [
+      'cp',
+      'gs://flutter_infra/flutter/${build.engineHash}/${build.variant.toArtifactPath()}/${artifactsFile}',
+      p.join(tempDir.path, artifactsFile)
+    ]);
+
+    final nestedZip =
+        build.variant.os == 'ios' ? 'Flutter.framework.zip' : 'flutter.jar';
+
+    await _run('unzip', [artifactsFile, nestedZip],
+        workingDirectory: tempDir.path);
+
+    final libraryPath = _libflutterPath(build);
+    await _run('unzip', [nestedZip, libraryPath],
+        workingDirectory: tempDir.path);
+
+    if (p.dirname(libraryPath) != '.') {
+      await File(p.join(tempDir.path, libraryPath))
+          .rename(p.join(tempDir.path, p.basename(libraryPath)));
+      await Directory(p.join(tempDir.path, p.dirname(libraryPath)))
+          .delete(recursive: true);
+    }
+
+    // Delete downloaded ZIP file.
+    await File(p.join(tempDir.path, artifactsFile)).delete();
+    await File(p.join(tempDir.path, nestedZip)).delete();
+  }
+
+  static String _libflutterPath(EngineBuild build) {
+    switch (build.variant.os) {
+      case 'ios':
+        return 'Flutter';
+      case 'android':
+        switch (build.variant.arch) {
+          case 'arm64':
+            return 'lib/arm64-v8a/libflutter.so';
+          case 'arm':
+            return 'lib/armeabi-v7a/libflutter.so';
+        }
+        break;
+    }
+    throw 'Unsupported combination of architecture and OS: ${build.variant}';
+  }
+
+  Future<void> _run(String executable, List<String> args,
+      {String workingDirectory}) async {
+    final result =
+        await Process.run(executable, args, workingDirectory: workingDirectory);
+    if (result.exitCode != 0) {
+      throw 'Failed to run ${executable} ${args.join(' ')} '
+          '(exit code ${result.exitCode}): ${result.stdout} ${result.stderr}';
+    }
+  }
+
+  void _touch(String path) {
+    _lastUsedTimestamp[path] = DateTime.now().millisecondsSinceEpoch;
+    _saveState();
+  }
+
+  /// If the cache is too big then evict all entries outside of the given
+  /// interval.
+  void _evictOldEntriesIfNecessary() {
+    if (_lastUsedTimestamp.length < _sizeThreshold) {
+      return;
+    }
+
+    final fiveMinutesAgo =
+        DateTime.now().subtract(_evictionThreshold).millisecondsSinceEpoch;
+    for (var path in _lastUsedTimestamp.entries
+        .where((e) => e.value < fiveMinutesAgo)
+        .map((e) => e.key)
+        .toList()) {
+      final dir = Directory(path);
+      if (dir.existsSync()) {
+        dir.deleteSync(recursive: true);
+      }
+      _lastUsedTimestamp.remove(path);
+    }
+    _saveState();
+  }
+}
+
+extension on EngineVariant {
+  String toArtifactPath() {
+    final modeSuffix = (mode == 'debug') ? '' : '-${mode}';
+    if (os == 'ios') {
+      return '${os}${modeSuffix}';
+    } else {
+      return '${os}-${arch}${modeSuffix}';
+    }
+  }
+}
diff --git a/github-label-notifier/symbolizer/pubspec.yaml b/github-label-notifier/symbolizer/pubspec.yaml
new file mode 100644
index 0000000..16368a6
--- /dev/null
+++ b/github-label-notifier/symbolizer/pubspec.yaml
@@ -0,0 +1,30 @@
+name: symbolizer
+description: >-
+  Symbolization tooling capable of extracting Android and iOS crashes from
+  plain text comments on GitHub and then automatically symbolize these crash
+  reports using Flutter Engine symbols stored in the Cloud Storage.
+version: 0.0.1
+publish_to: none
+
+environment:
+  sdk: '>=2.8.0 <3.0.0'
+
+dependencies:
+  args: ^1.6.0
+  corsac_jwt: ^0.2.2
+  freezed_annotation: ^0.12.0
+  github: ^7.0.3
+  http: ^0.12.2
+  json_annotation: ^3.1.0
+  logging: ^0.11.4
+  path: ^1.6.0
+  pedantic: ^1.9.2
+  sendgrid_mailer: ^0.1.2
+
+dev_dependencies:
+  build_runner: ^1.10.0
+  freezed: ^0.12.2
+  json_serializable: ^3.5.0
+  meta: ^1.2.3
+  mockito: ^4.1.2
+  test: ^1.15.4
diff --git a/github-label-notifier/symbolizer/test/bot_test.dart b/github-label-notifier/symbolizer/test/bot_test.dart
new file mode 100644
index 0000000..4cd2d45
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/bot_test.dart
@@ -0,0 +1,208 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+
+import 'package:github/github.dart';
+import 'package:mockito/mockito.dart';
+import 'package:path/path.dart' as p;
+import 'package:symbolizer/bot.dart';
+import 'package:symbolizer/config.dart';
+import 'package:symbolizer/model.dart';
+import 'package:symbolizer/ndk.dart';
+import 'package:symbolizer/symbols.dart';
+import 'package:test/test.dart';
+
+import 'package:symbolizer/symbolizer.dart';
+
+class MockGitHub extends Mock implements GitHub {}
+
+class MockIssuesService extends Mock implements IssuesService {}
+
+class SymbolsCacheProxy implements SymbolsCache {
+  final SymbolsCache impl;
+  final bool shouldThrow;
+  SymbolsCacheProxy(this.impl, {this.shouldThrow = false});
+
+  @override
+  Future<EngineBuild> findVariantByBuildId(
+      {String engineHash, EngineVariant variant, String buildId}) {
+    return impl.findVariantByBuildId(
+        engineHash: engineHash, variant: variant, buildId: buildId);
+  }
+
+  @override
+  Future<String> get(EngineBuild build) {
+    if (shouldThrow) {
+      throw 'Failed to download ${build}';
+    }
+    return impl.get(build);
+  }
+
+  @override
+  Future<String> getEngineBinary(EngineBuild build) =>
+      impl.getEngineBinary(build);
+}
+
+final regenerateExpectations =
+    bool.fromEnvironment('REGENERATE_EXPECTATIONS') ||
+        Platform.environment['REGENERATE_EXPECTATIONS'] == 'true';
+
+final config = loadConfigFromFile();
+
+void main() {
+  group('command parsing', () {
+    test('nothing to do', () {
+      expect(Bot.parseCommand(0, 'x64'), isNull);
+      expect(Bot.parseCommand(0, 'x64 debug'), isNull);
+      expect(Bot.parseCommand(0, 'x64\n@flutter-symbolizer-bot'), isNull);
+    });
+    test('simple', () {
+      expect(
+          Bot.parseCommand(0, '@flutter-symbolizer-bot'),
+          equals(BotCommand(
+            overrides: SymbolizationOverrides(),
+            symbolizeThis: false,
+            worklist: <String>{},
+          )));
+    });
+    test('with arch', () {
+      for (var arch in ['arm', 'arm64', 'x86', 'x64']) {
+        expect(
+            Bot.parseCommand(0, '@flutter-symbolizer-bot $arch'),
+            equals(BotCommand(
+              overrides: SymbolizationOverrides(arch: arch),
+              symbolizeThis: false,
+              worklist: <String>{},
+            )));
+      }
+    });
+    test('with mode', () {
+      for (var mode in ['profile', 'release', 'debug']) {
+        expect(
+            Bot.parseCommand(0, '@flutter-symbolizer-bot $mode'),
+            equals(BotCommand(
+              overrides: SymbolizationOverrides(mode: mode),
+              symbolizeThis: false,
+              worklist: <String>{},
+            )));
+      }
+    });
+    test('with engine hash', () {
+      expect(
+          Bot.parseCommand(
+              0, '@flutter-symbolizer-bot arm64 engine#aaabbb debug'),
+          equals(BotCommand(
+            overrides: SymbolizationOverrides(
+                arch: 'arm64', engineHash: 'aaabbb', mode: 'debug'),
+            symbolizeThis: false,
+            worklist: <String>{},
+          )));
+    });
+    test('with links', () {
+      expect(
+          Bot.parseCommand(
+              0,
+              '@flutter-symbolizer-bot '
+              'https://github.com/flutter/flutter/issues/0#issue-1 '
+              'engine#aaabbb '
+              'https://github.com/flutter/flutter/issues/0#issuecomment-2'),
+          equals(BotCommand(
+            overrides: SymbolizationOverrides(engineHash: 'aaabbb'),
+            symbolizeThis: false,
+            worklist: <String>{'issue-1', 'issuecomment-2'},
+          )));
+    });
+  });
+
+  group('end-to-end', () {
+    SymbolsCache symbols;
+    Ndk ndk;
+    GitHub github;
+    final files = Directory('test/data').listSync();
+
+    setUpAll(() {
+      ndk = Ndk();
+      symbols = SymbolsCache(path: 'symbols-cache', ndk: ndk);
+      github = GitHub(auth: Authentication.withToken(config.githubToken));
+    });
+
+    for (var inputFile in files
+        .where((f) => p.basename(f.path).endsWith('.input.txt'))
+        .cast<File>()) {
+      final testName = p.basename(inputFile.path).split('.').first;
+      final expectationFile = File('test/data/$testName.expected.github.txt');
+      test(testName, () async {
+        final input = await inputFile.readAsString();
+
+        final authorized = !input.contains('/unauthorized');
+        final shouldThrow = input.contains('/throw');
+
+        final symbolsProxy =
+            SymbolsCacheProxy(symbols, shouldThrow: shouldThrow);
+
+        final symbolizer =
+            Symbolizer(symbols: symbolsProxy, ndk: ndk, github: github);
+
+        final mockGitHub = MockGitHub();
+        final mockIssues = MockIssuesService();
+        final repo = RepositorySlug('flutter', 'flutter');
+        final bot = Bot(
+          github: mockGitHub,
+          symbolizer: symbolizer,
+          failuresEmail: null,
+          mailer: null,
+        );
+
+        final command = Bot.isCommand(input)
+            ? Bot.parseCommand(0, input).symbolizeThis
+                ? input
+                : input.split('\n').first
+            : Bot.accountMention;
+
+        final somebody = User(login: 'somebody');
+        final commandComment =
+            IssueComment(id: 1001, body: command, user: somebody);
+
+        when(mockGitHub.issues).thenAnswer((realInvocation) => mockIssues);
+        when(mockIssues.listCommentsByIssue(repo, 42))
+            .thenAnswer((realInvocation) async* {
+          yield IssueComment(id: 1002, body: 'something', user: somebody);
+          yield IssueComment(id: 1042, body: input, user: somebody);
+          yield commandComment;
+        });
+
+        when(mockIssues.createComment(repo, 42, any))
+            .thenAnswer((realInvocation) async {
+          return null;
+        });
+
+        throwOnMissingStub(mockGitHub);
+        throwOnMissingStub(mockIssues);
+        await bot.executeCommand(
+          repo,
+          Issue(id: 1000, body: 'something', number: 42),
+          commandComment,
+          authorized: authorized,
+        );
+
+        final result = verify(mockIssues.createComment(repo, 42, captureAny))
+            .captured
+            .single;
+
+        if (regenerateExpectations) {
+          await expectationFile.writeAsString(result);
+        } else {
+          final expected = await expectationFile.readAsString();
+
+          expect(result, equals(expected));
+        }
+      });
+    }
+
+    tearDownAll(() {
+      github.dispose();
+    });
+  });
+}
diff --git a/github-label-notifier/symbolizer/test/data/test01.expected.github.txt b/github-label-notifier/symbolizer/test/data/test01.expected.github.txt
new file mode 100644
index 0000000..7a0f468
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test01.expected.github.txt
@@ -0,0 +1,21 @@
+crash from null symbolized using symbols for `75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d` `android-arm-release`
+```
+#00 96a85449 <...>/lib/arm/libflutter.so+0x1384449
+                                         ??
+                                         ??:0:0
+#01 969c0e81 <...>/lib/arm/libflutter.so+0x12bfe81
+                                         ??
+                                         ??:0:0
+
+```
+_(Defaulted to release engine because build-id is unavailable or unreliable)_
+crash from null symbolized using symbols for `75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d` `android-arm-release`
+```
+#00 0001a43c /system/lib/libc.so (abort+63)
+#01 002bce85 <...>/lib/arm/libflutter.so (offset 0x1002000)
+                                         EllipticalRRectOp::EllipticalRRectOp(GrSimpleMeshDrawOpHelper::MakeArgs, SkRGBA4f<(SkAlphaType)2> const&, SkMatrix const&, SkRect const&, float, float, SkPoint, bool)
+                                         third_party/skia/src/gpu/ops/GrOvalOpFactory.cpp:2896:18
+
+```
+_(Defaulted to release engine because build-id is unavailable or unreliable)_
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test01.expected.txt b/github-label-notifier/symbolizer/test/data/test01.expected.txt
new file mode 100644
index 0000000..b5a0a76
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test01.expected.txt
@@ -0,0 +1,86 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": null
+      },
+      "frames": [
+        {
+          "pc": 2527614025,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "offset": 20464713,
+          "runtimeType": "dartvm"
+        },
+        {
+          "pc": 2526809729,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "offset": 19660417,
+          "runtimeType": "dartvm"
+        }
+      ],
+      "format": "dartvm",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 96a85449 <...>/lib/arm/libflutter.so+0x1384449\n                                         ??\n                                         ??:0:0\n#01 969c0e81 <...>/lib/arm/libflutter.so+0x12bfe81\n                                         ??\n                                         ??:0:0\n",
+    "notes": [
+      {
+        "kind": "defaultedToReleaseBuildIdUnavailable",
+        "message": null
+      }
+    ]
+  },
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 107580,
+          "binary": "/system/lib/libc.so",
+          "rest": " (abort+63)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 2870917,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "rest": " (offset 0x1002000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 8
+    },
+    "engineBuild": {
+      "engineHash": "75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 0001a43c /system/lib/libc.so (abort+63)\n#01 002bce85 <...>/lib/arm/libflutter.so (offset 0x1002000)\n                                         EllipticalRRectOp::EllipticalRRectOp(GrSimpleMeshDrawOpHelper::MakeArgs, SkRGBA4f<(SkAlphaType)2> const&, SkMatrix const&, SkRect const&, float, float, SkPoint, bool)\n                                         third_party/skia/src/gpu/ops/GrOvalOpFactory.cpp:2896:18\n",
+    "notes": [
+      {
+        "kind": "defaultedToReleaseBuildIdUnavailable",
+        "message": null
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test01.input.txt b/github-label-notifier/symbolizer/test/data/test01.input.txt
new file mode 100644
index 0000000..346690a
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test01.input.txt
@@ -0,0 +1,30 @@
+# By default symbolizer would use release build and produce incorrect result
+
+```bash
+0000-00-00 00:00:00.000 11111-22222/? E/Dart: ../../third_party/dart/runtime/vm/zone.cc: 94: error: Out of memory.
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: version=2.10.1 (stable) (Mon Jan 1 00:00:00 XXXX +0000) on "android_arm"
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: pid=11111, thread=22222, isolate_group=main(0x9550b600), isolate=main(0x933c4000)
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: isolate_instructions=969c0e00, vm_instructions=969c0e00
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM:   pc 0x96a85449 fp 0x885fef58 /data/app/com.example.app/lib/arm/libflutter.so+0x1384449
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM:   pc 0x969c0e81 fp 0x885ff014 /data/app/com.example.app/lib/arm/libflutter.so+0x12bfe81
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: -- End of DumpStackTrace
+0000-00-00 00:00:00.000 11111-22222/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 22222 (DartWorker), pid 11111 (example.app)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Build fingerprint: '...:8.1.0/.../...:...'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Revision: '0'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: ABI: 'arm'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: pid: 11111, tid: 22222, name: DartWorker  >>> com.example.app <<<
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r0 00000000  r1 00000000  r2 00000000  r3 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r4 00000000  r5 00000000  r6 00000000  r7 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r8 00000000  r9 00000000  sl 00000000  fp 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     ip 00000000  sp 00000000  lr 00000000  pc 00000000  cpsr 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: backtrace:
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #00 pc 0001a43c  /system/lib/libc.so (abort+63)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #01 pc 002bce85  /data/app/com.example.app/lib/arm/libflutter.so (offset 0x1002000)
+```
+
+```bash
+Doctor summary (to see all details, run flutter doctor -v):
+[✓] Flutter (Channel stable, 1.22.1, on xxxx, locale xxxx)
+```
diff --git a/github-label-notifier/symbolizer/test/data/test02.expected.github.txt b/github-label-notifier/symbolizer/test/data/test02.expected.github.txt
new file mode 100644
index 0000000..70e1c12
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test02.expected.github.txt
@@ -0,0 +1,23 @@
+crash from null symbolized using symbols for `75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d` `android-arm-debug`
+```
+#00 96a85449 <...>/lib/arm/libflutter.so+0x1384449
+                                         dart::Profiler::DumpStackTrace(bool)
+                                         third_party/dart/runtime/vm/profiler.cc:1110:18
+                                         dart::Profiler::DumpStackTrace(void*)
+                                         third_party/dart/runtime/vm/profiler.cc:1077:5
+#01 969c0e81 <...>/lib/arm/libflutter.so+0x12bfe81
+                                         dart::Assert::Fail(char const*, ...)
+                                         third_party/dart/runtime/platform/assert.cc:43:3
+
+```
+
+crash from null symbolized using symbols for `75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d` `android-arm-debug`
+```
+#00 0001a43c /system/lib/libc.so (abort+63)
+#01 002bce85 <...>/lib/arm/libflutter.so (offset 0x1002000)
+                                         dart::Assert::Fail(char const*, ...)
+                                         third_party/dart/runtime/platform/assert.cc:44:3
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test02.expected.txt b/github-label-notifier/symbolizer/test/data/test02.expected.txt
new file mode 100644
index 0000000..494e220
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test02.expected.txt
@@ -0,0 +1,76 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "debug"
+      },
+      "frames": [
+        {
+          "pc": 2527614025,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "offset": 20464713,
+          "runtimeType": "dartvm"
+        },
+        {
+          "pc": 2526809729,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "offset": 19660417,
+          "runtimeType": "dartvm"
+        }
+      ],
+      "format": "dartvm",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 96a85449 <...>/lib/arm/libflutter.so+0x1384449\n                                         dart::Profiler::DumpStackTrace(bool)\n                                         third_party/dart/runtime/vm/profiler.cc:1110:18\n                                         dart::Profiler::DumpStackTrace(void*)\n                                         third_party/dart/runtime/vm/profiler.cc:1077:5\n#01 969c0e81 <...>/lib/arm/libflutter.so+0x12bfe81\n                                         dart::Assert::Fail(char const*, ...)\n                                         third_party/dart/runtime/platform/assert.cc:43:3\n",
+    "notes": []
+  },
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "debug"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 107580,
+          "binary": "/system/lib/libc.so",
+          "rest": " (abort+63)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 2870917,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "rest": " (offset 0x1002000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 8
+    },
+    "engineBuild": {
+      "engineHash": "75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 0001a43c /system/lib/libc.so (abort+63)\n#01 002bce85 <...>/lib/arm/libflutter.so (offset 0x1002000)\n                                         dart::Assert::Fail(char const*, ...)\n                                         third_party/dart/runtime/platform/assert.cc:44:3\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test02.input.txt b/github-label-notifier/symbolizer/test/data/test02.input.txt
new file mode 100644
index 0000000..d241b30
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test02.input.txt
@@ -0,0 +1,30 @@
+@flutter-symbolizer-bot debug
+
+```bash
+0000-00-00 00:00:00.000 11111-22222/? E/Dart: ../../third_party/dart/runtime/vm/zone.cc: 94: error: Out of memory.
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: version=2.10.1 (stable) (Mon Jan 1 00:00:00 XXXX +0000) on "android_arm"
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: pid=11111, thread=22222, isolate_group=main(0x9550b600), isolate=main(0x933c4000)
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: isolate_instructions=969c0e00, vm_instructions=969c0e00
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM:   pc 0x96a85449 fp 0x885fef58 /data/app/com.example.app/lib/arm/libflutter.so+0x1384449
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM:   pc 0x969c0e81 fp 0x885ff014 /data/app/com.example.app/lib/arm/libflutter.so+0x12bfe81
+0000-00-00 00:00:00.000 11111-22222/? E/DartVM: -- End of DumpStackTrace
+0000-00-00 00:00:00.000 11111-22222/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 22222 (DartWorker), pid 11111 (example.app)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Build fingerprint: '...:8.1.0/.../...:...'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Revision: '0'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: ABI: 'arm'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: pid: 11111, tid: 22222, name: DartWorker  >>> com.example.app <<<
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r0 00000000  r1 00000000  r2 00000000  r3 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r4 00000000  r5 00000000  r6 00000000  r7 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r8 00000000  r9 00000000  sl 00000000  fp 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     ip 00000000  sp 00000000  lr 00000000  pc 00000000  cpsr 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: backtrace:
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #00 pc 0001a43c  /system/lib/libc.so (abort+63)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #01 pc 002bce85  /data/app/com.example.app/lib/arm/libflutter.so (offset 0x1002000)
+```
+
+```bash
+Doctor summary (to see all details, run flutter doctor -v):
+[✓] Flutter (Channel stable, 1.22.1, on xxxx, locale xxxx)
+```
diff --git a/github-label-notifier/symbolizer/test/data/test03.expected.github.txt b/github-label-notifier/symbolizer/test/data/test03.expected.github.txt
new file mode 100644
index 0000000..722593d
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test03.expected.github.txt
@@ -0,0 +1,49 @@
+crash from null symbolized using symbols for `5babba6c4d25fa237bbf755ab85c9a0c50b3c6ec` `android-arm-debug`
+```
+#00 0107f1b6 <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         neon::HLGish_k(skcms_TransferFunction const*, unsigned int, unsigned int, unsigned int, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&)::'lambda'(float vector[4])::operator()(float vector[4]) const
+                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:0:9
+#01 0107f2bb <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         neon::approx_pow2(float vector[4])
+                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:967:52
+                                         neon::approx_powf(float vector[4], float vector[4])
+                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:977:44
+                                         neon::HLGinvish_k(skcms_TransferFunction const*, unsigned int, unsigned int, unsigned int, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&)::'lambda'(float vector[4])::operator()(float vector[4]) const
+                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:1900:40
+#02 010d077d <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         SkDashImpl::flatten(SkWriteBuffer&) const
+                                         third_party/skia/src/effects/SkDashPathEffect.cpp:372:12
+#03 01049053 <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         SkBitmap::allocPixels(SkBitmap::Allocator*)
+                                         third_party/skia/src/core/SkBitmap.cpp:233:9
+#04 01049ce9 <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         SkBitmapController::State::State(SkImage_Base const*, SkMatrix const&, SkFilterQuality)
+                                         third_party/skia/src/core/SkBitmapController.cpp:109:22
+#05 0103dbf9 <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         flutter::Shell::NotifyLowMemoryWarning() const::$_12::$_12($_12&&)
+                                         flutter/shell/common/shell.cc:449:7
+                                         std::__1::__compressed_pair_elem<flutter::Shell::NotifyLowMemoryWarning() const::$_12, 0, false>::__compressed_pair_elem<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, 0u>(std::__1::piecewise_construct_t, std::__1::tuple<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&>, std::__1::__tuple_indices<0u>)
+                                         third_party/libcxx/include/memory:2155:9
+                                         std::__1::__compressed_pair<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12> >::__compressed_pair<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&>(std::__1::piecewise_construct_t, std::__1::tuple<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&>, std::__1::tuple<std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&>)
+                                         third_party/libcxx/include/memory:2256:9
+                                         std::__1::__function::__alloc_func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>, void ()>::__alloc_func(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&)
+                                         third_party/libcxx/include/functional:1524:11
+                                         std::__1::__function::__func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>, void ()>::__func(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&)
+                                         third_party/libcxx/include/functional:1652:11
+                                         std::__1::__function::__value_func<void ()>::__value_func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12> >(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12> const&)
+                                         third_party/libcxx/include/functional:1773:45
+                                         std::__1::__function::__value_func<void ()>::__value_func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, void>(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&)
+                                         third_party/libcxx/include/functional:1782:11
+                                         std::__1::function<void ()>::function<flutter::Shell::NotifyLowMemoryWarning() const::$_12, void>(flutter::Shell::NotifyLowMemoryWarning() const::$_12)
+                                         third_party/libcxx/include/functional:2362:50
+                                         flutter::Shell::NotifyLowMemoryWarning() const
+                                         flutter/shell/common/shell.cc:449:7
+#06 0103dfc3 <...>/lib/arm/libflutter.so (offset 0x102f000)
+                                         flutter::Shell::OnPlatformViewCreated(std::__1::unique_ptr<flutter::Surface, std::__1::default_delete<flutter::Surface> >)
+                                         flutter/shell/common/shell.cc:712:3
+#07 00047507 /system/lib/libc.so (__pthread_start(void*)+22)
+#08 0001af75 /system/lib/libc.so (__start_thread+32)
+
+```
+_(Defaulted to release engine because build-id is unavailable or unreliable)_
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test03.expected.txt b/github-label-notifier/symbolizer/test/data/test03.expected.txt
new file mode 100644
index 0000000..049bd6a
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test03.expected.txt
@@ -0,0 +1,102 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "debug"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 17297846,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 17298107,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "02",
+          "pc": 17631101,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "03",
+          "pc": 17076307,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "04",
+          "pc": 17079529,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "05",
+          "pc": 17030137,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "06",
+          "pc": 17031107,
+          "binary": "/data/app/com.example.app-/lib/arm/libflutter.so",
+          "rest": " (offset 0x102f000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "07",
+          "pc": 292103,
+          "binary": "/system/lib/libc.so",
+          "rest": " (__pthread_start(void*)+22)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "08",
+          "pc": 110453,
+          "binary": "/system/lib/libc.so",
+          "rest": " (__start_thread+32)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 8
+    },
+    "engineBuild": {
+      "engineHash": "5babba6c4d25fa237bbf755ab85c9a0c50b3c6ec",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 0107f1b6 <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         neon::HLGish_k(skcms_TransferFunction const*, unsigned int, unsigned int, unsigned int, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&)::'lambda'(float vector[4])::operator()(float vector[4]) const\n                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:0:9\n#01 0107f2bb <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         neon::approx_pow2(float vector[4])\n                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:967:52\n                                         neon::approx_powf(float vector[4], float vector[4])\n                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:977:44\n                                         neon::HLGinvish_k(skcms_TransferFunction const*, unsigned int, unsigned int, unsigned int, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&, float vector[4]&)::'lambda'(float vector[4])::operator()(float vector[4]) const\n                                         third_party/skia/src/opts/SkRasterPipeline_opts.h:1900:40\n#02 010d077d <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         SkDashImpl::flatten(SkWriteBuffer&) const\n                                         third_party/skia/src/effects/SkDashPathEffect.cpp:372:12\n#03 01049053 <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         SkBitmap::allocPixels(SkBitmap::Allocator*)\n                                         third_party/skia/src/core/SkBitmap.cpp:233:9\n#04 01049ce9 <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         SkBitmapController::State::State(SkImage_Base const*, SkMatrix const&, SkFilterQuality)\n                                         third_party/skia/src/core/SkBitmapController.cpp:109:22\n#05 0103dbf9 <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         flutter::Shell::NotifyLowMemoryWarning() const::$_12::$_12($_12&&)\n                                         flutter/shell/common/shell.cc:449:7\n                                         std::__1::__compressed_pair_elem<flutter::Shell::NotifyLowMemoryWarning() const::$_12, 0, false>::__compressed_pair_elem<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, 0u>(std::__1::piecewise_construct_t, std::__1::tuple<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&>, std::__1::__tuple_indices<0u>)\n                                         third_party/libcxx/include/memory:2155:9\n                                         std::__1::__compressed_pair<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12> >::__compressed_pair<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&>(std::__1::piecewise_construct_t, std::__1::tuple<flutter::Shell::NotifyLowMemoryWarning() const::$_12&&>, std::__1::tuple<std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&>)\n                                         third_party/libcxx/include/memory:2256:9\n                                         std::__1::__function::__alloc_func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>, void ()>::__alloc_func(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&)\n                                         third_party/libcxx/include/functional:1524:11\n                                         std::__1::__function::__func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>, void ()>::__func(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12>&&)\n                                         third_party/libcxx/include/functional:1652:11\n                                         std::__1::__function::__value_func<void ()>::__value_func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12> >(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&, std::__1::allocator<flutter::Shell::NotifyLowMemoryWarning() const::$_12> const&)\n                                         third_party/libcxx/include/functional:1773:45\n                                         std::__1::__function::__value_func<void ()>::__value_func<flutter::Shell::NotifyLowMemoryWarning() const::$_12, void>(flutter::Shell::NotifyLowMemoryWarning() const::$_12&&)\n                                         third_party/libcxx/include/functional:1782:11\n                                         std::__1::function<void ()>::function<flutter::Shell::NotifyLowMemoryWarning() const::$_12, void>(flutter::Shell::NotifyLowMemoryWarning() const::$_12)\n                                         third_party/libcxx/include/functional:2362:50\n                                         flutter::Shell::NotifyLowMemoryWarning() const\n                                         flutter/shell/common/shell.cc:449:7\n#06 0103dfc3 <...>/lib/arm/libflutter.so (offset 0x102f000)\n                                         flutter::Shell::OnPlatformViewCreated(std::__1::unique_ptr<flutter::Surface, std::__1::default_delete<flutter::Surface> >)\n                                         flutter/shell/common/shell.cc:712:3\n#07 00047507 /system/lib/libc.so (__pthread_start(void*)+22)\n#08 0001af75 /system/lib/libc.so (__start_thread+32)\n",
+    "notes": [
+      {
+        "kind": "defaultedToReleaseBuildIdUnavailable",
+        "message": null
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test03.input.txt b/github-label-notifier/symbolizer/test/data/test03.input.txt
new file mode 100644
index 0000000..d2f2492
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test03.input.txt
@@ -0,0 +1,29 @@
+```
+[  +54 ms] Launching lib\main.dart on Something XYZ in debug mode...
+[ +114 ms] F/libc    (12964): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 13108 (example.app), pid 12964 (example.app)
+[+1325 ms] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+[   +1 ms] Build fingerprint: 'xiaomi/cactus/cactus:8.1.0/O11019/V10.3.8.0.OCBMIXM:user/release-keys'
+[   +1 ms] Revision: '0'
+[   +1 ms] ABI: 'arm'
+[        ] pid: 12964, tid: 13108, name: example.app  >>> com.example.app <<<
+[        ] signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
+[        ] Cause: null pointer dereference
+[   +7 ms] backtrace:
+[   +1 ms]     #00 pc 0107f1b6  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[   +1 ms]     #01 pc 0107f2bb  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[   +1 ms]     #02 pc 010d077d  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[   +1 ms]     #03 pc 01049053  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[   +1 ms]     #04 pc 01049ce9  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[   +1 ms]     #05 pc 0103dbf9  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[   +2 ms]     #06 pc 0103dfc3  /data/app/com.example.app-/lib/arm/libflutter.so (offset 0x102f000)
+[        ]     #07 pc 00047507  /system/lib/libc.so (__pthread_start(void*)+22)
+[        ]     #08 pc 0001af75  /system/lib/libc.so (__start_thread+32)
+```
+
+```
+[√] Flutter (Channel stable, 1.22.0, on Microsoft Windows [Version 10.0.18363.1082], locale en-US)
+    • Flutter version 1.22.0 at ...
+    • Framework revision d408d302e2 (12 days ago), 2020-09-29 11:49:17 -0700
+    • Engine revision 5babba6c4d
+    • Dart version 2.10.0
+```
diff --git a/github-label-notifier/symbolizer/test/data/test04.expected.github.txt b/github-label-notifier/symbolizer/test/data/test04.expected.github.txt
new file mode 100644
index 0000000..58c8910
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test04.expected.github.txt
@@ -0,0 +1,9 @@
+crash from null symbolized using symbols for `07e2520d5d8f837da439317adab4ecd7bff2f72d` `android-arm64-debug`
+```
+#00 00000000013461f4 <...>/lib/arm64/libflutter.so (BuildId: ed61359865ec8404e21864594776b9dcbe60a137)
+                                                   SkImage::peekPixels(SkPixmap*) const
+                                                   third_party/skia/src/image/SkImage.cpp:50:25
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test04.expected.txt b/github-label-notifier/symbolizer/test/data/test04.expected.txt
new file mode 100644
index 0000000..e4279d0
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test04.expected.txt
@@ -0,0 +1,33 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 20210164,
+          "binary": "/data/app/com.example.app/lib/arm64/libflutter.so",
+          "rest": " (BuildId: ed61359865ec8404e21864594776b9dcbe60a137)",
+          "buildId": "ed61359865ec8404e21864594776b9dcbe60a137",
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 10
+    },
+    "engineBuild": {
+      "engineHash": "07e2520d5d8f837da439317adab4ecd7bff2f72d",
+      "variant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 00000000013461f4 <...>/lib/arm64/libflutter.so (BuildId: ed61359865ec8404e21864594776b9dcbe60a137)\n                                                   SkImage::peekPixels(SkPixmap*) const\n                                                   third_party/skia/src/image/SkImage.cpp:50:25\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test04.input.txt b/github-label-notifier/symbolizer/test/data/test04.input.txt
new file mode 100644
index 0000000..e207cc1
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test04.input.txt
@@ -0,0 +1,21 @@
+```
+[ +206 ms] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+[        ] Build fingerprint: 'motorola/river_amz/river:10/QPUS30.52-23-4/6de4a:user/release-keys'
+[        ] Revision: 'PVT'
+[        ] ABI: 'arm64'
+[   +1 ms] Timestamp: 2020-09-12 08:54:59-0400
+[  +23 ms] pid: 6901, tid: 7008, name: com.example.app  >>> com.example.app <<<
+[   +1 ms] uid: 10266
+[        ] signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
+[  +49 ms] Cause: null pointer dereference
+[        ] backtrace:
+[   +1 ms]       #00 pc 00000000013461f4  /data/app/com.example.app/lib/arm64/libflutter.so (BuildId: ed61359865ec8404e21864594776b9dcbe60a137)
+```
+
+```
+[√] Flutter (Channel dev, 1.22.0-9.0.pre, on Microsoft Windows [Version ...], locale en-US)
+    • Flutter version 1.22.0-9.0.pre at ...
+    • Framework revision 7a43175198 (2 weeks ago), 2020-08-28 23:18:04 -0400
+    • Engine revision 07e2520d5d
+    • Dart version 2.10.0 (build 2.10.0-73.0.dev)
+```
diff --git a/github-label-notifier/symbolizer/test/data/test05.expected.github.txt b/github-label-notifier/symbolizer/test/data/test05.expected.github.txt
new file mode 100644
index 0000000..66dff72
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test05.expected.github.txt
@@ -0,0 +1,14 @@
+crash from null symbolized using symbols for `d1bc06f032f9d6c148ea6b96b48261d6f545004f` `android-arm64-debug`
+```
+#00 0000000000633dbc <...>/lib/arm64/libflutter.so (offset 0x1240000)
+                                                   dart::KernelProgramInfo::string_offsets() const
+                                                   third_party/dart/runtime/vm/object.h:5091:48
+                                                   dart::kernel::TranslationHelper::InitFromKernelProgramInfo(dart::KernelProgramInfo const&)
+                                                   third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.cc:79:46
+#01 000000000051cca0 <...>/lib/arm64/libflutter.so (offset 0x1240000)
+                                                   dart::DartCompilationPipeline::BuildFlowGraph(dart::Zone*, dart::ParsedFunction*, dart::ZoneGrowableArray<dart::ICData const*>*, long, bool)
+                                                   third_party/dart/runtime/vm/compiler/jit/compiler.cc:138:28
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test05.expected.txt b/github-label-notifier/symbolizer/test/data/test05.expected.txt
new file mode 100644
index 0000000..88961f9
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test05.expected.txt
@@ -0,0 +1,41 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "debug"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 6503868,
+          "binary": "/data/app/com.example.app-2OHRSaHLPfIforBPzoBjfQ==/lib/arm64/libflutter.so",
+          "rest": " (offset 0x1240000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 5360800,
+          "binary": "/data/app/com.example.app-2OHRSaHLPfIforBPzoBjfQ==/lib/arm64/libflutter.so",
+          "rest": " (offset 0x1240000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "d1bc06f032f9d6c148ea6b96b48261d6f545004f",
+      "variant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 0000000000633dbc <...>/lib/arm64/libflutter.so (offset 0x1240000)\n                                                   dart::KernelProgramInfo::string_offsets() const\n                                                   third_party/dart/runtime/vm/object.h:5091:48\n                                                   dart::kernel::TranslationHelper::InitFromKernelProgramInfo(dart::KernelProgramInfo const&)\n                                                   third_party/dart/runtime/vm/compiler/frontend/kernel_translation_helper.cc:79:46\n#01 000000000051cca0 <...>/lib/arm64/libflutter.so (offset 0x1240000)\n                                                   dart::DartCompilationPipeline::BuildFlowGraph(dart::Zone*, dart::ParsedFunction*, dart::ZoneGrowableArray<dart::ICData const*>*, long, bool)\n                                                   third_party/dart/runtime/vm/compiler/jit/compiler.cc:138:28\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test05.input.txt b/github-label-notifier/symbolizer/test/data/test05.input.txt
new file mode 100644
index 0000000..9f494d4
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test05.input.txt
@@ -0,0 +1,22 @@
+@flutter-symbolizer-bot debug
+
+```
+F/libc    (18690): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x36013f in tid 22036 (2.ui)
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+Revision: '0'
+ABI: 'arm64'
+pid: 18690, tid: 22036, name: 2.ui  >>> com.example.app <<<
+backtrace:
+    #00 pc 0000000000633dbc  /data/app/com.example.app-2OHRSaHLPfIforBPzoBjfQ==/lib/arm64/libflutter.so (offset 0x1240000)
+    #01 pc 000000000051cca0  /data/app/com.example.app-2OHRSaHLPfIforBPzoBjfQ==/lib/arm64/libflutter.so (offset 0x1240000)
+```
+
+```
+Flutter 1.20.4 • channel stable • https://github.com/flutter/flutter.git
+Framework • revision fba99f6cf9 (5 days ago) • 2020-09-14 15:32:52 -0700
+Engine • revision d1bc06f032
+Tools • Dart 2.9.2
+```
+
+
+
diff --git a/github-label-notifier/symbolizer/test/data/test06.expected.github.txt b/github-label-notifier/symbolizer/test/data/test06.expected.github.txt
new file mode 100644
index 0000000..8dd9b8c
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test06.expected.github.txt
@@ -0,0 +1,87 @@
+crash from null symbolized using symbols for `499a70f5e21b2d2ee2fd360f2f58579fc29e0c55` `android-arm64-profile`
+```
+#00 00000000012de4ec <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#01 00000000012dcbb4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#02 00000000012dca70 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#03 00000000012cf0d4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#04 00000000012cf9ac <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#05 00000000012d033c <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#06 00000000012cf410 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#07 00000000012cf1e4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#08 00000000012d0598 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#09 0000000001298e74 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#10 000000000129df34 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   ??
+                                                   ??:0:0
+#11 0000000000019d8c /system/lib64/libutils.so (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+#12 0000000000019990 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+#13 0000000000110f74 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+#14 000000000020fadc /system/framework/arm64/boot-framework.oat (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+#15 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#16 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#17 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#18 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#19 000000000067d794 /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#20 000000000012d914 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#21 00000000003975ae /system/framework/framework.jar (offset 0x92b000) (android.os.MessageQueue.next+34)
+#22 000000000067b3b8 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#23 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#24 0000000000396964 /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)
+#25 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#26 000000000030dc24 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#27 000000000030f00c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#28 0000000000177f40 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#29 000000000013f7d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#30 00000000001a1698 /system/framework/framework.jar (android.app.ActivityThread.main)
+#31 0000000000305d3c /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#32 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#33 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#34 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#35 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#36 000000000055431c /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#37 00000000004d3b28 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#38 00000000000896f4 /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)
+#39 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#40 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#41 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#42 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#43 000000000067b118 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#44 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#45 00000000004492be /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
+#46 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#47 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#48 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#49 0000000000897668 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+#50 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#51 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#52 0000000000552d58 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#53 000000000055320c /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#54 000000000043811c /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#55 0000000000099424 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+#56 00000000000a08b0 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+#57 0000000000003580 /system/bin/app_process64 (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)
+#58 0000000000049418 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)
+
+```
+_(Build-ID mismatch: Backtrace refers to bad8640c836d37c147451a3a6ff5fbc721467212 but we used engine with 212dfb5693ad13476239acde23c8ce47d1d91a3a)_
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test06.expected.txt b/github-label-notifier/symbolizer/test/data/test06.expected.txt
new file mode 100644
index 0000000..fa32971
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test06.expected.txt
@@ -0,0 +1,502 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "profile"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 19784940,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 19778484,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "02",
+          "pc": 19778160,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "03",
+          "pc": 19722452,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "04",
+          "pc": 19724716,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "05",
+          "pc": 19727164,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "06",
+          "pc": 19723280,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "07",
+          "pc": 19722724,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "08",
+          "pc": 19727768,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "09",
+          "pc": 19500660,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "10",
+          "pc": 19521332,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "11",
+          "pc": 105868,
+          "binary": "/system/lib64/libutils.so",
+          "rest": " (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)",
+          "buildId": "dfbf9171cc06645d34e6cd7beb8516d6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "12",
+          "pc": 104848,
+          "binary": "/system/lib64/libutils.so",
+          "rest": " (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)",
+          "buildId": "dfbf9171cc06645d34e6cd7beb8516d6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "13",
+          "pc": 1118068,
+          "binary": "/system/lib64/libandroid_runtime.so",
+          "rest": " (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)",
+          "buildId": "d3ad3cbe4c6876e3de4e909ccf51f0b6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "14",
+          "pc": 2161372,
+          "binary": "/system/framework/arm64/boot-framework.oat",
+          "rest": " (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)",
+          "buildId": "c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3",
+          "runtimeType": "android"
+        },
+        {
+          "no": "15",
+          "pc": 1258852,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "16",
+          "pc": 1739384,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "17",
+          "pc": 3244812,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "18",
+          "pc": 3204664,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "19",
+          "pc": 6805396,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "20",
+          "pc": 1235220,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "21",
+          "pc": 3765678,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (offset 0x92b000) (android.os.MessageQueue.next+34)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "22",
+          "pc": 6796216,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "23",
+          "pc": 1234964,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "24",
+          "pc": 3762532,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (offset 0x92b000) (android.os.Looper.loop+156)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "25",
+          "pc": 3169332,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "26",
+          "pc": 3202084,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "27",
+          "pc": 3207180,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "28",
+          "pc": 1539904,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "29",
+          "pc": 1308632,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "30",
+          "pc": 1709720,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (android.app.ActivityThread.main)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "31",
+          "pc": 3169596,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "32",
+          "pc": 6725152,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "33",
+          "pc": 1298424,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "34",
+          "pc": 1259496,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "35",
+          "pc": 1739412,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "36",
+          "pc": 5587740,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "37",
+          "pc": 5061416,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "38",
+          "pc": 562932,
+          "binary": "/apex/com.android.art/javalib/arm64/boot.oat",
+          "rest": " (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)",
+          "buildId": "13577ce71153c228ecf0eb73fc39f45010d487f8",
+          "runtimeType": "android"
+        },
+        {
+          "no": "39",
+          "pc": 1258852,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "40",
+          "pc": 1739384,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "41",
+          "pc": 3244812,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "42",
+          "pc": 3204664,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "43",
+          "pc": 6795544,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "44",
+          "pc": 1234964,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "45",
+          "pc": 4494014,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "46",
+          "pc": 3169332,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "47",
+          "pc": 6725152,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "48",
+          "pc": 1298424,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "49",
+          "pc": 9008744,
+          "binary": "/system/framework/arm64/boot-framework.oat",
+          "rest": " (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)",
+          "buildId": "c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3",
+          "runtimeType": "android"
+        },
+        {
+          "no": "50",
+          "pc": 1259496,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "51",
+          "pc": 1739412,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "52",
+          "pc": 5582168,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "53",
+          "pc": 5583372,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "54",
+          "pc": 4423964,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "55",
+          "pc": 627748,
+          "binary": "/system/lib64/libandroid_runtime.so",
+          "rest": " (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)",
+          "buildId": "d3ad3cbe4c6876e3de4e909ccf51f0b6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "56",
+          "pc": 657584,
+          "binary": "/system/lib64/libandroid_runtime.so",
+          "rest": " (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)",
+          "buildId": "d3ad3cbe4c6876e3de4e909ccf51f0b6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "57",
+          "pc": 13696,
+          "binary": "/system/bin/app_process64",
+          "rest": " (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)",
+          "buildId": "3254c0fd94c1b04edc39169c6c635aac",
+          "runtimeType": "android"
+        },
+        {
+          "no": "58",
+          "pc": 300056,
+          "binary": "/apex/com.android.runtime/lib64/bionic/libc.so",
+          "rest": " (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)",
+          "buildId": "03452a4a418e14ff93948f26561eace6",
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 11
+    },
+    "engineBuild": {
+      "engineHash": "499a70f5e21b2d2ee2fd360f2f58579fc29e0c55",
+      "variant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "profile"
+      }
+    },
+    "symbolized": "#00 00000000012de4ec <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#01 00000000012dcbb4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#02 00000000012dca70 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#03 00000000012cf0d4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#04 00000000012cf9ac <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#05 00000000012d033c <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#06 00000000012cf410 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#07 00000000012cf1e4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#08 00000000012d0598 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#09 0000000001298e74 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#10 000000000129df34 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   ??\n                                                   ??:0:0\n#11 0000000000019d8c /system/lib64/libutils.so (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)\n#12 0000000000019990 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)\n#13 0000000000110f74 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)\n#14 000000000020fadc /system/framework/arm64/boot-framework.oat (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)\n#15 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#16 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#17 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#18 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#19 000000000067d794 /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#20 000000000012d914 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#21 00000000003975ae /system/framework/framework.jar (offset 0x92b000) (android.os.MessageQueue.next+34)\n#22 000000000067b3b8 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#23 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#24 0000000000396964 /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)\n#25 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#26 000000000030dc24 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#27 000000000030f00c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#28 0000000000177f40 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#29 000000000013f7d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#30 00000000001a1698 /system/framework/framework.jar (android.app.ActivityThread.main)\n#31 0000000000305d3c /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#32 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#33 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#34 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#35 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#36 000000000055431c /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#37 00000000004d3b28 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#38 00000000000896f4 /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)\n#39 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#40 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#41 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#42 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#43 000000000067b118 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#44 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#45 00000000004492be /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)\n#46 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#47 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#48 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#49 0000000000897668 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)\n#50 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#51 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#52 0000000000552d58 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#53 000000000055320c /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#54 000000000043811c /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#55 0000000000099424 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)\n#56 00000000000a08b0 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)\n#57 0000000000003580 /system/bin/app_process64 (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)\n#58 0000000000049418 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)\n",
+    "notes": [
+      {
+        "kind": "buildIdMismatch",
+        "message": "Backtrace refers to bad8640c836d37c147451a3a6ff5fbc721467212 but we used engine with 212dfb5693ad13476239acde23c8ce47d1d91a3a"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test06.input.txt b/github-label-notifier/symbolizer/test/data/test06.input.txt
new file mode 100644
index 0000000..023b674
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test06.input.txt
@@ -0,0 +1,90 @@
+@flutter-symbolizer-bot engine#499a70f profile
+
+```
+10-18 11:05:50.120   617   617 I hwservicemanager: getTransport: Cannot find entry android.hardware.graphics.allocator@4.0::IAllocator/default in either framework or device manifest.
+10-18 11:05:50.120 22568 22568 W Gralloc4: allocator 3.x is not supported
+10-18 11:05:50.173 22568 22568 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 22568 (n.platformviews), pid 22568 (n.platformviews)
+10-18 11:05:50.227 22656 22656 I crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
+10-18 11:05:50.228   892   892 I tombstoned: received crash request for pid 22568
+10-18 11:05:50.228 22656 22656 I crash_dump64: performing dump of process 22568 (target tid = 22568)
+10-18 11:05:50.234 22656 22656 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+10-18 11:05:50.234 22656 22656 F DEBUG   : Build fingerprint: 'google/flame/flame:11/RP1A.200720.009/6720564:user/release-keys'
+10-18 11:05:50.234 22656 22656 F DEBUG   : Revision: 'MP1.0'
+10-18 11:05:50.234 22656 22656 F DEBUG   : ABI: 'arm64'
+10-18 11:05:50.234 22656 22656 F DEBUG   : Timestamp: 2020-10-18 11:05:50-0700
+10-18 11:05:50.234 22656 22656 F DEBUG   : pid: 22568, tid: 22568, name: n.platformviews  >>> io.flutter.integration.platformviews <<<
+10-18 11:05:50.234 22656 22656 F DEBUG   : uid: 10466
+10-18 11:05:50.234 22656 22656 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
+10-18 11:05:50.234 22656 22656 F DEBUG   : Cause: null pointer dereference
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x0  0000000000000000  x1  0000000000000000  x2  0000007fee1c8ad0  x3  0000007fee1c8ac0
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x4  0000007fee1c8ab0  x5  00000076aefffc4d  x6  0000000000000339  x7  0000000000000437
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x8  0000000000000000  x9  0000000000000000  x10 0000000000000000  x11 0000000000000000
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x12 0000000000000000  x13 0000000000000000  x14 0000000000000002  x15 00000079ad34a090
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x16 00000076a9833178  x17 00000079ac09fad4  x18 00000079ae724000  x19 00000077482eccd0
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x20 000000779832e6b0  x21 0000007fee1c8ae0  x22 00000077482eccd8  x23 0000007fee1c8ac0
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x24 0000007fee1c8ab0  x25 000000779832e6b0  x26 0000000000000438  x27 0000000000000339
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x28 0000000000000437  x29 0000000000000339
+10-18 11:05:50.234 22656 22656 F DEBUG   :     lr  00000076a90e64cc  sp  0000007fee1c8920  pc  00000076a90e64ec  pst 0000000060000000
+10-18 11:05:50.420 22656 22656 F DEBUG   : backtrace:
+10-18 11:05:50.420 22656 22656 F DEBUG   :       #00 pc 00000000012de4ec  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.420 22656 22656 F DEBUG   :       #01 pc 00000000012dcbb4  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #02 pc 00000000012dca70  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #03 pc 00000000012cf0d4  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #04 pc 00000000012cf9ac  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #05 pc 00000000012d033c  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #06 pc 00000000012cf410  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #07 pc 00000000012cf1e4  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #08 pc 00000000012d0598  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #09 pc 0000000001298e74  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #10 pc 000000000129df34  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #11 pc 0000000000019d8c  /system/lib64/libutils.so (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #12 pc 0000000000019990  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #13 pc 0000000000110f74  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #14 pc 000000000020fadc  /system/framework/arm64/boot-framework.oat (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #15 pc 0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #16 pc 00000000001a8a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #17 pc 000000000031830c  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #18 pc 000000000030e638  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #19 pc 000000000067d794  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #20 pc 000000000012d914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #21 pc 00000000003975ae  /system/framework/framework.jar (offset 0x92b000) (android.os.MessageQueue.next+34)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #22 pc 000000000067b3b8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #23 pc 000000000012d814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #24 pc 0000000000396964  /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #25 pc 0000000000305c34  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #26 pc 000000000030dc24  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #27 pc 000000000030f00c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #28 pc 0000000000177f40  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #29 pc 000000000013f7d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #30 pc 00000000001a1698  /system/framework/framework.jar (android.app.ActivityThread.main)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #31 pc 0000000000305d3c  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #32 pc 0000000000669e20  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #33 pc 000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #34 pc 00000000001337e8  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #35 pc 00000000001a8a94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #36 pc 000000000055431c  /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #37 pc 00000000004d3b28  /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #38 pc 00000000000896f4  /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #39 pc 0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #40 pc 00000000001a8a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #41 pc 000000000031830c  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #42 pc 000000000030e638  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #43 pc 000000000067b118  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #44 pc 000000000012d814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #45 pc 00000000004492be  /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #46 pc 0000000000305c34  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #47 pc 0000000000669e20  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #48 pc 000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #49 pc 0000000000897668  /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #50 pc 00000000001337e8  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #51 pc 00000000001a8a94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #52 pc 0000000000552d58  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #53 pc 000000000055320c  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #54 pc 000000000043811c  /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #55 pc 0000000000099424  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #56 pc 00000000000a08b0  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #57 pc 0000000000003580  /system/bin/app_process64 (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #58 pc 0000000000049418  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)
+10-18 11:05:50.432   938  1052 D VSC     : @ 2171979.791: [WO] tilt angle 89
+
+```
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test07.expected.github.txt b/github-label-notifier/symbolizer/test/data/test07.expected.github.txt
new file mode 100644
index 0000000..e60ad19
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test07.expected.github.txt
@@ -0,0 +1,109 @@
+crash from null symbolized using symbols for `499a70f5e21b2d2ee2fd360f2f58579fc29e0c55` `android-arm64-debug`
+```
+#00 00000000012de4ec <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::SurfacePool::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::AndroidContext>, std::__1::shared_ptr<flutter::PlatformViewAndroidJNI>, std::__1::shared_ptr<flutter::AndroidSurfaceFactory>)
+                                                   flutter/shell/platform/android/external_view_embedder/surface_pool.cc:36:26
+#01 00000000012dcbb4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::AndroidExternalViewEmbedder::CreateSurfaceIfNeeded(GrDirectContext*, long, sk_sp<SkPicture>, SkRect const&)
+                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:192:56
+#02 00000000012dca70 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::AndroidExternalViewEmbedder::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)
+                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:174:11
+#03 00000000012cf0d4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::Rasterizer::DrawToSurface(flutter::LayerTree&)
+                                                   flutter/shell/common/rasterizer.cc:473:31
+#04 00000000012cf9ac <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::Rasterizer::DoDraw(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)
+                                                   flutter/shell/common/rasterizer.cc:338:32
+#05 00000000012d033c <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const
+                                                   flutter/shell/common/rasterizer.cc:172:27
+                                                   decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&>(fp)(std::__1::forward<std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(fp0))) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                                                   third_party/libcxx/include/type_traits:3530:1
+                                                   void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                                                   third_party/libcxx/include/__functional_base:348:9
+                                                   std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                                                   third_party/libcxx/include/functional:1533:16
+                                                   std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                                                   third_party/libcxx/include/functional:1707:12
+#06 00000000012cf410 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const
+                                                   third_party/libcxx/include/functional:2419:12
+                                                   flutter::Pipeline<flutter::LayerTree>::Consume(std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)> const&)
+                                                   flutter/shell/common/pipeline.h:161:7
+#07 00000000012cf1e4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)
+                                                   flutter/shell/common/rasterizer.cc:176:52
+#08 00000000012d0598 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2::operator()() const
+                                                   flutter/shell/common/rasterizer.cc:207:26
+                                                   decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&>(fp)()) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&>(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&)
+                                                   third_party/libcxx/include/type_traits:3530:1
+                                                   void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&>(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&)
+                                                   third_party/libcxx/include/__functional_base:348:9
+                                                   std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2>, void ()>::operator()()
+                                                   third_party/libcxx/include/functional:1533:16
+                                                   std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2>, void ()>::operator()()
+                                                   third_party/libcxx/include/functional:1707:12
+#09 0000000001298e74 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   std::__1::function<void ()>::operator()() const
+                                                   third_party/libcxx/include/functional:2419:12
+                                                   fml::MessageLoopImpl::FlushTasks(fml::FlushType)
+                                                   flutter/fml/message_loop_impl.cc:130:5
+#10 000000000129df34 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+                                                   fml::MessageLoopAndroid::MessageLoopAndroid()::$_0::operator()(int, int, void*) const
+                                                   flutter/fml/platform/android/message_loop_android.cc:42:52
+                                                   fml::MessageLoopAndroid::MessageLoopAndroid()::$_0::__invoke(int, int, void*)
+                                                   flutter/fml/platform/android/message_loop_android.cc:40:40
+#11 0000000000019d8c /system/lib64/libutils.so (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+#12 0000000000019990 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+#13 0000000000110f74 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+#14 000000000020fadc /system/framework/arm64/boot-framework.oat (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+#15 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#16 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#17 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#18 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#19 000000000067d794 /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#20 000000000012d914 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#21 00000000003975ae /system/framework/framework.jar (offset 0x92b000) (android.os.MessageQueue.next+34)
+#22 000000000067b3b8 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#23 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#24 0000000000396964 /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)
+#25 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#26 000000000030dc24 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#27 000000000030f00c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#28 0000000000177f40 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#29 000000000013f7d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#30 00000000001a1698 /system/framework/framework.jar (android.app.ActivityThread.main)
+#31 0000000000305d3c /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#32 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#33 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#34 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#35 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#36 000000000055431c /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#37 00000000004d3b28 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#38 00000000000896f4 /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)
+#39 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#40 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#41 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#42 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#43 000000000067b118 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#44 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#45 00000000004492be /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
+#46 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#47 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#48 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#49 0000000000897668 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+#50 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#51 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#52 0000000000552d58 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#53 000000000055320c /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#54 000000000043811c /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+#55 0000000000099424 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+#56 00000000000a08b0 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+#57 0000000000003580 /system/bin/app_process64 (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)
+#58 0000000000049418 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test07.expected.txt b/github-label-notifier/symbolizer/test/data/test07.expected.txt
new file mode 100644
index 0000000..05a519f
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test07.expected.txt
@@ -0,0 +1,497 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 19784940,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 19778484,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "02",
+          "pc": 19778160,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "03",
+          "pc": 19722452,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "04",
+          "pc": 19724716,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "05",
+          "pc": 19727164,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "06",
+          "pc": 19723280,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "07",
+          "pc": 19722724,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "08",
+          "pc": 19727768,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "09",
+          "pc": 19500660,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "10",
+          "pc": 19521332,
+          "binary": "/data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)",
+          "buildId": "bad8640c836d37c147451a3a6ff5fbc721467212",
+          "runtimeType": "android"
+        },
+        {
+          "no": "11",
+          "pc": 105868,
+          "binary": "/system/lib64/libutils.so",
+          "rest": " (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)",
+          "buildId": "dfbf9171cc06645d34e6cd7beb8516d6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "12",
+          "pc": 104848,
+          "binary": "/system/lib64/libutils.so",
+          "rest": " (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)",
+          "buildId": "dfbf9171cc06645d34e6cd7beb8516d6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "13",
+          "pc": 1118068,
+          "binary": "/system/lib64/libandroid_runtime.so",
+          "rest": " (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)",
+          "buildId": "d3ad3cbe4c6876e3de4e909ccf51f0b6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "14",
+          "pc": 2161372,
+          "binary": "/system/framework/arm64/boot-framework.oat",
+          "rest": " (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)",
+          "buildId": "c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3",
+          "runtimeType": "android"
+        },
+        {
+          "no": "15",
+          "pc": 1258852,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "16",
+          "pc": 1739384,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "17",
+          "pc": 3244812,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "18",
+          "pc": 3204664,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "19",
+          "pc": 6805396,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "20",
+          "pc": 1235220,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "21",
+          "pc": 3765678,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (offset 0x92b000) (android.os.MessageQueue.next+34)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "22",
+          "pc": 6796216,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "23",
+          "pc": 1234964,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "24",
+          "pc": 3762532,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (offset 0x92b000) (android.os.Looper.loop+156)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "25",
+          "pc": 3169332,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "26",
+          "pc": 3202084,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "27",
+          "pc": 3207180,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "28",
+          "pc": 1539904,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "29",
+          "pc": 1308632,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "30",
+          "pc": 1709720,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (android.app.ActivityThread.main)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "31",
+          "pc": 3169596,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "32",
+          "pc": 6725152,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "33",
+          "pc": 1298424,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "34",
+          "pc": 1259496,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "35",
+          "pc": 1739412,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "36",
+          "pc": 5587740,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "37",
+          "pc": 5061416,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "38",
+          "pc": 562932,
+          "binary": "/apex/com.android.art/javalib/arm64/boot.oat",
+          "rest": " (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)",
+          "buildId": "13577ce71153c228ecf0eb73fc39f45010d487f8",
+          "runtimeType": "android"
+        },
+        {
+          "no": "39",
+          "pc": 1258852,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "40",
+          "pc": 1739384,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "41",
+          "pc": 3244812,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "42",
+          "pc": 3204664,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "43",
+          "pc": 6795544,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "44",
+          "pc": 1234964,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "45",
+          "pc": 4494014,
+          "binary": "/system/framework/framework.jar",
+          "rest": " (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "46",
+          "pc": 3169332,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "47",
+          "pc": 6725152,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "48",
+          "pc": 1298424,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "49",
+          "pc": 9008744,
+          "binary": "/system/framework/arm64/boot-framework.oat",
+          "rest": " (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)",
+          "buildId": "c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3",
+          "runtimeType": "android"
+        },
+        {
+          "no": "50",
+          "pc": 1259496,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "51",
+          "pc": 1739412,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "52",
+          "pc": 5582168,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "53",
+          "pc": 5583372,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "54",
+          "pc": 4423964,
+          "binary": "/apex/com.android.art/lib64/libart.so",
+          "rest": " (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)",
+          "buildId": "0252adff22f4c0297f97cb35735c7649",
+          "runtimeType": "android"
+        },
+        {
+          "no": "55",
+          "pc": 627748,
+          "binary": "/system/lib64/libandroid_runtime.so",
+          "rest": " (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)",
+          "buildId": "d3ad3cbe4c6876e3de4e909ccf51f0b6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "56",
+          "pc": 657584,
+          "binary": "/system/lib64/libandroid_runtime.so",
+          "rest": " (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)",
+          "buildId": "d3ad3cbe4c6876e3de4e909ccf51f0b6",
+          "runtimeType": "android"
+        },
+        {
+          "no": "57",
+          "pc": 13696,
+          "binary": "/system/bin/app_process64",
+          "rest": " (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)",
+          "buildId": "3254c0fd94c1b04edc39169c6c635aac",
+          "runtimeType": "android"
+        },
+        {
+          "no": "58",
+          "pc": 300056,
+          "binary": "/apex/com.android.runtime/lib64/bionic/libc.so",
+          "rest": " (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)",
+          "buildId": "03452a4a418e14ff93948f26561eace6",
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 11
+    },
+    "engineBuild": {
+      "engineHash": "499a70f5e21b2d2ee2fd360f2f58579fc29e0c55",
+      "variant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 00000000012de4ec <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::SurfacePool::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::AndroidContext>, std::__1::shared_ptr<flutter::PlatformViewAndroidJNI>, std::__1::shared_ptr<flutter::AndroidSurfaceFactory>)\n                                                   flutter/shell/platform/android/external_view_embedder/surface_pool.cc:36:26\n#01 00000000012dcbb4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::AndroidExternalViewEmbedder::CreateSurfaceIfNeeded(GrDirectContext*, long, sk_sp<SkPicture>, SkRect const&)\n                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:192:56\n#02 00000000012dca70 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::AndroidExternalViewEmbedder::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)\n                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:174:11\n#03 00000000012cf0d4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::Rasterizer::DrawToSurface(flutter::LayerTree&)\n                                                   flutter/shell/common/rasterizer.cc:473:31\n#04 00000000012cf9ac <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::Rasterizer::DoDraw(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)\n                                                   flutter/shell/common/rasterizer.cc:338:32\n#05 00000000012d033c <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const\n                                                   flutter/shell/common/rasterizer.cc:172:27\n                                                   decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&>(fp)(std::__1::forward<std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(fp0))) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                                                   third_party/libcxx/include/type_traits:3530:1\n                                                   void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                                                   third_party/libcxx/include/__functional_base:348:9\n                                                   std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                                                   third_party/libcxx/include/functional:1533:16\n                                                   std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                                                   third_party/libcxx/include/functional:1707:12\n#06 00000000012cf410 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const\n                                                   third_party/libcxx/include/functional:2419:12\n                                                   flutter::Pipeline<flutter::LayerTree>::Consume(std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)> const&)\n                                                   flutter/shell/common/pipeline.h:161:7\n#07 00000000012cf1e4 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)\n                                                   flutter/shell/common/rasterizer.cc:176:52\n#08 00000000012d0598 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2::operator()() const\n                                                   flutter/shell/common/rasterizer.cc:207:26\n                                                   decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&>(fp)()) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&>(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&)\n                                                   third_party/libcxx/include/type_traits:3530:1\n                                                   void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&>(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2&)\n                                                   third_party/libcxx/include/__functional_base:348:9\n                                                   std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2>, void ()>::operator()()\n                                                   third_party/libcxx/include/functional:1533:16\n                                                   std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_2>, void ()>::operator()()\n                                                   third_party/libcxx/include/functional:1707:12\n#09 0000000001298e74 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   std::__1::function<void ()>::operator()() const\n                                                   third_party/libcxx/include/functional:2419:12\n                                                   fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                                                   flutter/fml/message_loop_impl.cc:130:5\n#10 000000000129df34 <...>/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)\n                                                   fml::MessageLoopAndroid::MessageLoopAndroid()::$_0::operator()(int, int, void*) const\n                                                   flutter/fml/platform/android/message_loop_android.cc:42:52\n                                                   fml::MessageLoopAndroid::MessageLoopAndroid()::$_0::__invoke(int, int, void*)\n                                                   flutter/fml/platform/android/message_loop_android.cc:40:40\n#11 0000000000019d8c /system/lib64/libutils.so (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)\n#12 0000000000019990 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)\n#13 0000000000110f74 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)\n#14 000000000020fadc /system/framework/arm64/boot-framework.oat (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)\n#15 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#16 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#17 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#18 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#19 000000000067d794 /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#20 000000000012d914 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#21 00000000003975ae /system/framework/framework.jar (offset 0x92b000) (android.os.MessageQueue.next+34)\n#22 000000000067b3b8 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#23 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#24 0000000000396964 /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)\n#25 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#26 000000000030dc24 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#27 000000000030f00c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#28 0000000000177f40 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#29 000000000013f7d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#30 00000000001a1698 /system/framework/framework.jar (android.app.ActivityThread.main)\n#31 0000000000305d3c /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#32 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#33 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#34 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#35 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#36 000000000055431c /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#37 00000000004d3b28 /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#38 00000000000896f4 /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)\n#39 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#40 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#41 000000000031830c /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#42 000000000030e638 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#43 000000000067b118 /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#44 000000000012d814 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#45 00000000004492be /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)\n#46 0000000000305c34 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#47 0000000000669e20 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#48 000000000013cff8 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#49 0000000000897668 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)\n#50 00000000001337e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#51 00000000001a8a94 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#52 0000000000552d58 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#53 000000000055320c /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#54 000000000043811c /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)\n#55 0000000000099424 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)\n#56 00000000000a08b0 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)\n#57 0000000000003580 /system/bin/app_process64 (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)\n#58 0000000000049418 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test07.input.txt b/github-label-notifier/symbolizer/test/data/test07.input.txt
new file mode 100644
index 0000000..74be1de
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test07.input.txt
@@ -0,0 +1,90 @@
+@flutter-symbolizer-bot engine#499a70f
+
+```
+10-18 11:05:50.120   617   617 I hwservicemanager: getTransport: Cannot find entry android.hardware.graphics.allocator@4.0::IAllocator/default in either framework or device manifest.
+10-18 11:05:50.120 22568 22568 W Gralloc4: allocator 3.x is not supported
+10-18 11:05:50.173 22568 22568 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 22568 (n.platformviews), pid 22568 (n.platformviews)
+10-18 11:05:50.227 22656 22656 I crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
+10-18 11:05:50.228   892   892 I tombstoned: received crash request for pid 22568
+10-18 11:05:50.228 22656 22656 I crash_dump64: performing dump of process 22568 (target tid = 22568)
+10-18 11:05:50.234 22656 22656 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+10-18 11:05:50.234 22656 22656 F DEBUG   : Build fingerprint: 'google/flame/flame:11/RP1A.200720.009/6720564:user/release-keys'
+10-18 11:05:50.234 22656 22656 F DEBUG   : Revision: 'MP1.0'
+10-18 11:05:50.234 22656 22656 F DEBUG   : ABI: 'arm64'
+10-18 11:05:50.234 22656 22656 F DEBUG   : Timestamp: 2020-10-18 11:05:50-0700
+10-18 11:05:50.234 22656 22656 F DEBUG   : pid: 22568, tid: 22568, name: n.platformviews  >>> io.flutter.integration.platformviews <<<
+10-18 11:05:50.234 22656 22656 F DEBUG   : uid: 10466
+10-18 11:05:50.234 22656 22656 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
+10-18 11:05:50.234 22656 22656 F DEBUG   : Cause: null pointer dereference
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x0  0000000000000000  x1  0000000000000000  x2  0000007fee1c8ad0  x3  0000007fee1c8ac0
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x4  0000007fee1c8ab0  x5  00000076aefffc4d  x6  0000000000000339  x7  0000000000000437
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x8  0000000000000000  x9  0000000000000000  x10 0000000000000000  x11 0000000000000000
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x12 0000000000000000  x13 0000000000000000  x14 0000000000000002  x15 00000079ad34a090
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x16 00000076a9833178  x17 00000079ac09fad4  x18 00000079ae724000  x19 00000077482eccd0
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x20 000000779832e6b0  x21 0000007fee1c8ae0  x22 00000077482eccd8  x23 0000007fee1c8ac0
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x24 0000007fee1c8ab0  x25 000000779832e6b0  x26 0000000000000438  x27 0000000000000339
+10-18 11:05:50.234 22656 22656 F DEBUG   :     x28 0000000000000437  x29 0000000000000339
+10-18 11:05:50.234 22656 22656 F DEBUG   :     lr  00000076a90e64cc  sp  0000007fee1c8920  pc  00000076a90e64ec  pst 0000000060000000
+10-18 11:05:50.420 22656 22656 F DEBUG   : backtrace:
+10-18 11:05:50.420 22656 22656 F DEBUG   :       #00 pc 00000000012de4ec  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.420 22656 22656 F DEBUG   :       #01 pc 00000000012dcbb4  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #02 pc 00000000012dca70  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #03 pc 00000000012cf0d4  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #04 pc 00000000012cf9ac  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #05 pc 00000000012d033c  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #06 pc 00000000012cf410  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #07 pc 00000000012cf1e4  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #08 pc 00000000012d0598  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #09 pc 0000000001298e74  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #10 pc 000000000129df34  /data/app/~~26h8wU6-ipZ3oX50ip-uBA==/io.flutter.integration.platformviews-SzfN5V-3ue43jUkolPPxKw==/lib/arm64/libflutter.so (BuildId: bad8640c836d37c147451a3a6ff5fbc721467212)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #11 pc 0000000000019d8c  /system/lib64/libutils.so (android::Looper::pollInner(int)+916) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #12 pc 0000000000019990  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) (BuildId: dfbf9171cc06645d34e6cd7beb8516d6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #13 pc 0000000000110f74  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #14 pc 000000000020fadc  /system/framework/arm64/boot-framework.oat (art_jni_trampoline+140) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #15 pc 0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #16 pc 00000000001a8a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #17 pc 000000000031830c  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #18 pc 000000000030e638  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #19 pc 000000000067d794  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #20 pc 000000000012d914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #21 pc 00000000003975ae  /system/framework/framework.jar (offset 0x92b000) (android.os.MessageQueue.next+34)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #22 pc 000000000067b3b8  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1520) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #23 pc 000000000012d814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #24 pc 0000000000396964  /system/framework/framework.jar (offset 0x92b000) (android.os.Looper.loop+156)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #25 pc 0000000000305c34  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #26 pc 000000000030dc24  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #27 pc 000000000030f00c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+1772) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #28 pc 0000000000177f40  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<true, false>(art::interpreter::SwitchImplContext*)+57848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #29 pc 000000000013f7d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #30 pc 00000000001a1698  /system/framework/framework.jar (android.app.ActivityThread.main)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #31 pc 0000000000305d3c  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+532) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #32 pc 0000000000669e20  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #33 pc 000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #34 pc 00000000001337e8  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #35 pc 00000000001a8a94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #36 pc 000000000055431c  /apex/com.android.art/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1364) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #37 pc 00000000004d3b28  /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #38 pc 00000000000896f4  /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+180) (BuildId: 13577ce71153c228ecf0eb73fc39f45010d487f8)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #39 pc 0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #40 pc 00000000001a8a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #41 pc 000000000031830c  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #42 pc 000000000030e638  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #43 pc 000000000067b118  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+848) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #44 pc 000000000012d814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #45 pc 00000000004492be  /system/framework/framework.jar (offset 0x125d000) (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+22)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #46 pc 0000000000305c34  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.16249794272548105830)+268) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #47 pc 0000000000669e20  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #48 pc 000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #49 pc 0000000000897668  /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2280) (BuildId: c0c6ddca30ccdc4ccaf4b39f4e24792c1ce6f6d3)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #50 pc 00000000001337e8  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #51 pc 00000000001a8a94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #52 pc 0000000000552d58  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #53 pc 000000000055320c  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #54 pc 000000000043811c  /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 0252adff22f4c0297f97cb35735c7649)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #55 pc 0000000000099424  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+124) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #56 pc 00000000000a08b0  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+836) (BuildId: d3ad3cbe4c6876e3de4e909ccf51f0b6)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #57 pc 0000000000003580  /system/bin/app_process64 (main+1336) (BuildId: 3254c0fd94c1b04edc39169c6c635aac)
+10-18 11:05:50.421 22656 22656 F DEBUG   :       #58 pc 0000000000049418  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108) (BuildId: 03452a4a418e14ff93948f26561eace6)
+10-18 11:05:50.432   938  1052 D VSC     : @ 2171979.791: [WO] tilt angle 89
+
+```
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test08.expected.github.txt b/github-label-notifier/symbolizer/test/data/test08.expected.github.txt
new file mode 100644
index 0000000..5ab32ae
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test08.expected.github.txt
@@ -0,0 +1,16 @@
+crash from null symbolized using symbols for `499a70f5e21b2d2ee2fd360f2f58579fc29e0c55` `android-arm64-profile`
+```
+#00 0000000000b92598 <...>/lib/arm64/libflutter.so (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)
+                                                   OUTLINED_FUNCTION_7710
+                                                   ??:0:0
+#01 00000000006e083c <...>/lib/arm64/libflutter.so (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)
+                                                   flutter::SurfacePool::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::AndroidContext>, std::__1::shared_ptr<flutter::PlatformViewAndroidJNI>, std::__1::shared_ptr<flutter::AndroidSurfaceFactory>)
+                                                   flutter/shell/platform/android/external_view_embedder/surface_pool.cc:0:7
+                                                   flutter::AndroidExternalViewEmbedder::CreateSurfaceIfNeeded(GrDirectContext*, long, sk_sp<SkPicture>, SkRect const&)
+                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:192:56
+                                                   flutter::AndroidExternalViewEmbedder::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)
+                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:174:11
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test08.expected.txt b/github-label-notifier/symbolizer/test/data/test08.expected.txt
new file mode 100644
index 0000000..e278f4c
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test08.expected.txt
@@ -0,0 +1,41 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 12133784,
+          "binary": "/data/app/io.flutter.integration.platformviews-Uh7C5I-KFJChGzUncdxDdw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)",
+          "buildId": "212dfb5693ad13476239acde23c8ce47d1d91a3a",
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 7211068,
+          "binary": "/data/app/io.flutter.integration.platformviews-Uh7C5I-KFJChGzUncdxDdw==/lib/arm64/libflutter.so",
+          "rest": " (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)",
+          "buildId": "212dfb5693ad13476239acde23c8ce47d1d91a3a",
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 10
+    },
+    "engineBuild": {
+      "engineHash": "499a70f5e21b2d2ee2fd360f2f58579fc29e0c55",
+      "variant": {
+        "os": "android",
+        "arch": "arm64",
+        "mode": "profile"
+      }
+    },
+    "symbolized": "#00 0000000000b92598 <...>/lib/arm64/libflutter.so (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)\n                                                   OUTLINED_FUNCTION_7710\n                                                   ??:0:0\n#01 00000000006e083c <...>/lib/arm64/libflutter.so (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)\n                                                   flutter::SurfacePool::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::AndroidContext>, std::__1::shared_ptr<flutter::PlatformViewAndroidJNI>, std::__1::shared_ptr<flutter::AndroidSurfaceFactory>)\n                                                   flutter/shell/platform/android/external_view_embedder/surface_pool.cc:0:7\n                                                   flutter::AndroidExternalViewEmbedder::CreateSurfaceIfNeeded(GrDirectContext*, long, sk_sp<SkPicture>, SkRect const&)\n                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:192:56\n                                                   flutter::AndroidExternalViewEmbedder::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)\n                                                   flutter/shell/platform/android/external_view_embedder/external_view_embedder.cc:174:11\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test08.input.txt b/github-label-notifier/symbolizer/test/data/test08.input.txt
new file mode 100644
index 0000000..8e57d71
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test08.input.txt
@@ -0,0 +1,24 @@
+@flutter-symbolizer-bot engine#499a70f
+
+10-20 16:25:11.188  4954  4954 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+10-20 16:25:11.188  4954  4954 F DEBUG   : Build fingerprint: 'google/sargo/sargo:10/QQ1A.200205.003/6293851:userdebug/dev-keys'
+10-20 16:25:11.188  4954  4954 F DEBUG   : Revision: 'MP1.0'
+10-20 16:25:11.188  4954  4954 F DEBUG   : ABI: 'arm64'
+10-20 16:25:11.189  4954  4954 F DEBUG   : Timestamp: 2020-10-20 16:25:11+0200
+10-20 16:25:11.190  4954  4954 F DEBUG   : pid: 4825, tid: 4825, name: n.platformviews  >>> io.flutter.integration.platformviews <<<
+10-20 16:25:11.190  4954  4954 F DEBUG   : uid: 10250
+10-20 16:25:11.190  4954  4954 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
+10-20 16:25:11.190  4954  4954 F DEBUG   : Cause: null pointer dereference
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x0  0000007601449a70  x1  0000007febd2eed8  x2  0000000000000000  x3  0000000000000004
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x4  0000007febd2ebb8  x5  000000756c1b205c  x6  0000000000000339  x7  0000000000000437
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x8  0000000000000000  x9  0000000000000000  x10 0000000000000000  x11 0000000000000000
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x12 0000000000000000  x13 0000000000000001  x14 0000000000000000  x15 0000007600ffb090
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x16 00000075fedd18f0  x17 00000075fedc38c0  x18 0000007602152000  x19 0000007febd2eed8
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x20 000000756bd67218  x21 0000000000000438  x22 0000000000000001  x23 00000074fc362fc0
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x24 00000075126b06d8  x25 0000007570899600  x26 00000074fc6dc998  x27 000000756bc6e940
+10-20 16:25:11.190  4954  4954 F DEBUG   :     x28 0000007601449a88  x29 0000000000000000
+10-20 16:25:11.190  4954  4954 F DEBUG   :     sp  0000007febd2ee60  lr  0000007512ca7840  pc  0000007513159598
+10-20 16:25:11.190  4954  4954 F DEBUG   :
+10-20 16:25:11.190  4954  4954 F DEBUG   : backtrace:
+10-20 16:25:11.190  4954  4954 F DEBUG   :       #00 pc 0000000000b92598  /data/app/io.flutter.integration.platformviews-Uh7C5I-KFJChGzUncdxDdw==/lib/arm64/libflutter.so (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)
+10-20 16:25:11.190  4954  4954 F DEBUG   :       #01 pc 00000000006e083c  /data/app/io.flutter.integration.platformviews-Uh7C5I-KFJChGzUncdxDdw==/lib/arm64/libflutter.so (BuildId: 212dfb5693ad13476239acde23c8ce47d1d91a3a)
diff --git a/github-label-notifier/symbolizer/test/data/test09.expected.github.txt b/github-label-notifier/symbolizer/test/data/test09.expected.github.txt
new file mode 100644
index 0000000..3a02f3e
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test09.expected.github.txt
@@ -0,0 +1,772 @@
+crash from null symbolized using symbols for `45b66b722e1275c47dccbe6b002c8e4cb13ea983` `android-x64-debug`
+```
+#00 000000000009b80e /system/lib64/libc.so (je_arena_ralloc+142)
+#01 00000000000b098b /system/lib64/libc.so (je_realloc+283)
+#02 0000000000ed47a5 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    sk_realloc_throw(void*, unsigned long)
+                                                    third_party/skia/src/ports/SkMemory_malloc.cpp:57:35
+#03 0000000000dfd565 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkTDArray<unsigned char>::resizeStorageToAtLeast(int)
+                                                    third_party/skia/include/private/SkTDArray.h:364:22
+#04 0000000000dfd532 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkTDArray<unsigned char>::setCount(int)
+                                                    third_party/skia/include/private/SkTDArray.h:145:19
+#05 0000000000dfd4eb <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkTDArray<unsigned char>::adjustCount(int)
+                                                    third_party/skia/include/private/SkTDArray.h:343:15
+#06 0000000000dfd4a4 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkTDArray<unsigned char>::append(int, unsigned char const*)
+                                                    third_party/skia/include/private/SkTDArray.h:176:19
+#07 0000000000f61ead <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrQuadBuffer<(anonymous namespace)::FillRectOp::ColorAndAA>::concat(GrQuadBuffer<(anonymous namespace)::FillRectOp::ColorAndAA> const&)
+                                                    third_party/skia/src/gpu/geometry/GrQuadBuffer.h:308:11
+                                                    (anonymous namespace)::FillRectOp::onCombineIfPossible(GrOp*, GrCaps const&)
+                                                    third_party/skia/src/gpu/ops/GrFillRectOp.cpp:275:0
+#08 0000000000f6591f <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrOp::combineIfPossible(GrOp*, GrCaps const&)
+                                                    third_party/skia/src/gpu/ops/GrOp.cpp:38:25
+#09 0000000000f403f7 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetOpList::OpChain::tryConcat(GrRenderTargetOpList::OpChain::List*, GrProcessorSet::Analysis, GrXferProcessor::DstProxy const&, GrAppliedClip const*, SkRect const&, GrCaps const&, GrOpMemoryPool*, GrAuditTrail*)
+                                                    third_party/skia/src/gpu/GrRenderTargetOpList.cpp:258:31
+#10 0000000000f406bd <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetOpList::OpChain::appendOp(std::__1::unique_ptr<GrOp, std::__1::default_delete<GrOp> >, GrProcessorSet::Analysis, GrXferProcessor::DstProxy const*, GrAppliedClip const*, GrCaps const&, GrOpMemoryPool*, GrAuditTrail*)
+                                                    third_party/skia/src/gpu/GrRenderTargetOpList.cpp:325:16
+#11 0000000000f410b2 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetOpList::recordOp(std::__1::unique_ptr<GrOp, std::__1::default_delete<GrOp> >, GrProcessorSet::Analysis, GrAppliedClip*, GrXferProcessor::DstProxy const*, GrCaps const&)
+                                                    third_party/skia/src/gpu/GrRenderTargetOpList.cpp:696:28
+#12 0000000000f3f287 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetOpList::addDrawOp(std::__1::unique_ptr<GrDrawOp, std::__1::default_delete<GrDrawOp> >, GrProcessorSet::Analysis const&, GrAppliedClip&&, GrXferProcessor::DstProxy const&, GrCaps const&)
+                                                    third_party/skia/src/gpu/GrRenderTargetOpList.h:91:15
+#13 0000000000f378ce <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetContext::addDrawOp(GrClip const&, std::__1::unique_ptr<GrDrawOp, std::__1::default_delete<GrDrawOp> >, std::__1::function<void (GrOp*, unsigned int)> const&)
+                                                    third_party/skia/src/gpu/GrRenderTargetContext.cpp:2632:13
+#14 0000000000f389d9 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetContext::drawFilledQuad(GrClip const&, GrPaint&&, GrAA, GrQuadAAFlags, GrQuad const&, GrQuad const&, GrUserStencilSettings const*)
+                                                    third_party/skia/src/gpu/GrRenderTargetContext.cpp:717:15
+#15 0000000000e26a7c <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetContext::fillRectToRect(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, SkRect const&, SkRect const&)
+                                                    third_party/skia/src/gpu/GrRenderTargetContext.h:120:15
+#16 0000000000f38b85 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    GrRenderTargetContext::drawRect(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, SkRect const&, GrStyle const*)
+                                                    third_party/skia/src/gpu/GrRenderTargetContext.cpp:745:15
+#17 0000000000fb3e9c <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkGpuDevice::drawRect(SkRect const&, SkPaint const&)
+                                                    third_party/skia/src/gpu/SkGpuDevice.cpp:410:27
+#18 0000000000e0bb07 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawRect(SkRect const&, SkPaint const&)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2126:27
+#19 0000000000e0a42b <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawRect(SkRect const&, SkPaint const&)
+                                                    third_party/skia/src/core/SkCanvas.cpp:1731:11
+#20 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#21 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#22 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#23 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#24 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#25 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#26 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#27 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#28 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#29 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#30 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#31 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#32 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#33 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#34 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#35 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#36 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#37 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#38 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#39 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#40 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#41 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#42 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#43 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#44 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#45 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#46 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#47 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#48 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#49 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#50 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#51 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#52 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#53 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#54 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#55 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#56 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#57 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#58 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#59 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#60 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#61 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#62 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#63 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#64 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#65 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#66 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#67 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#68 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#69 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#70 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#71 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#72 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#73 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#74 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#75 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#76 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#77 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#78 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#79 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#80 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#81 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#82 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#83 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#84 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#85 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#86 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#87 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#88 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#89 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#90 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#91 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#92 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#93 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#94 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#95 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#96 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#97 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5
+#98 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14
+#99 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15
+#100 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#101 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#102 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#103 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#104 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#105 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#106 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#107 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#108 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#109 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#110 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#111 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#112 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#113 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#114 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#115 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#116 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#117 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#118 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#119 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#120 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#121 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#122 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#123 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#124 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#125 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#126 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#127 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#128 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#129 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#130 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#131 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#132 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#133 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#134 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#135 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#136 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#137 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#138 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#139 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#140 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#141 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#142 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#143 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#144 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#145 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#146 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#147 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#148 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#149 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#150 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#151 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#152 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#153 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#154 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#155 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#156 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#157 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#158 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#159 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#160 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#161 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#162 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#163 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#164 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#165 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#166 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#167 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#168 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#169 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#170 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#171 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#172 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#173 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#174 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#175 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#176 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#177 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#178 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#179 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#180 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#181 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#182 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#183 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#184 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#185 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#186 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#187 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#188 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#189 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#190 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#191 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#192 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#193 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#194 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#195 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#196 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#197 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#198 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#199 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#200 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#201 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#202 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#203 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#204 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#205 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#206 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#207 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#208 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#209 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#210 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#211 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#212 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#213 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#214 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#215 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#216 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#217 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#218 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#219 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#220 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#221 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#222 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#223 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#224 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#225 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#226 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#227 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#228 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#229 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#230 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#231 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#232 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#233 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#234 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#235 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#236 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#237 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#238 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#239 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#240 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#241 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#242 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#243 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#244 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#245 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#246 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#247 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#248 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#249 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#250 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#251 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+#252 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)
+                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20
+#253 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const
+                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5
+#254 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14
+#255 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)
+                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)
+                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15
+
+```
+_(Defaulted to release engine because build-id is unavailable or unreliable)_
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test09.expected.txt b/github-label-notifier/symbolizer/test/data/test09.expected.txt
new file mode 100644
index 0000000..44a7c89
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test09.expected.txt
@@ -0,0 +1,2078 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "x64",
+        "mode": "debug"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 636942,
+          "binary": "/system/lib64/libc.so",
+          "rest": " (je_arena_ralloc+142)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 723339,
+          "binary": "/system/lib64/libc.so",
+          "rest": " (je_realloc+283)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "02",
+          "pc": 15550373,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "03",
+          "pc": 14669157,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "04",
+          "pc": 14669106,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "05",
+          "pc": 14669035,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "06",
+          "pc": 14668964,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "07",
+          "pc": 16129709,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "08",
+          "pc": 16144671,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "09",
+          "pc": 15991799,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "10",
+          "pc": 15992509,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "11",
+          "pc": 15995058,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "12",
+          "pc": 15987335,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "13",
+          "pc": 15956174,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "14",
+          "pc": 15960537,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "15",
+          "pc": 14838396,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "16",
+          "pc": 15960965,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "17",
+          "pc": 16465564,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "18",
+          "pc": 14727943,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "19",
+          "pc": 14722091,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "20",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "21",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "22",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "23",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "24",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "25",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "26",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "27",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "28",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "29",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "30",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "31",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "32",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "33",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "34",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "35",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "36",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "37",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "38",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "39",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "40",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "41",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "42",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "43",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "44",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "45",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "46",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "47",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "48",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "49",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "50",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "51",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "52",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "53",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "54",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "55",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "56",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "57",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "58",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "59",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "60",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "61",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "62",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "63",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "64",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "65",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "66",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "67",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "68",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "69",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "70",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "71",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "72",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "73",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "74",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "75",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "76",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "77",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "78",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "79",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "80",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "81",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "82",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "83",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "84",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "85",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "86",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "87",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "88",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "89",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "90",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "91",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "92",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "93",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "94",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "95",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "96",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "97",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "98",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "99",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "100",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "101",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "102",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "103",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "104",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "105",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "106",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "107",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "108",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "109",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "110",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "111",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "112",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "113",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "114",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "115",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "116",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "117",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "118",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "119",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "120",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "121",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "122",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "123",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "124",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "125",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "126",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "127",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "128",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "129",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "130",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "131",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "132",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "133",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "134",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "135",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "136",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "137",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "138",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "139",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "140",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "141",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "142",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "143",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "144",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "145",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "146",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "147",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "148",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "149",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "150",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "151",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "152",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "153",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "154",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "155",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "156",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "157",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "158",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "159",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "160",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "161",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "162",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "163",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "164",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "165",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "166",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "167",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "168",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "169",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "170",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "171",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "172",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "173",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "174",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "175",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "176",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "177",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "178",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "179",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "180",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "181",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "182",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "183",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "184",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "185",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "186",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "187",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "188",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "189",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "190",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "191",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "192",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "193",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "194",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "195",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "196",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "197",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "198",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "199",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "200",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "201",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "202",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "203",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "204",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "205",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "206",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "207",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "208",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "209",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "210",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "211",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "212",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "213",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "214",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "215",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "216",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "217",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "218",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "219",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "220",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "221",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "222",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "223",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "224",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "225",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "226",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "227",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "228",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "229",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "230",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "231",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "232",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "233",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "234",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "235",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "236",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "237",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "238",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "239",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "240",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "241",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "242",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "243",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "244",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "245",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "246",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "247",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "248",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "249",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "250",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "251",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "252",
+          "pc": 14989229,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "253",
+          "pc": 15232841,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "254",
+          "pc": 14736380,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "255",
+          "pc": 14736192,
+          "binary": "/data/app/com.example.app/lib/x86_64/libflutter.so",
+          "rest": " (offset 0xdb0000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 9
+    },
+    "engineBuild": {
+      "engineHash": "45b66b722e1275c47dccbe6b002c8e4cb13ea983",
+      "variant": {
+        "os": "android",
+        "arch": "x64",
+        "mode": "debug"
+      }
+    },
+    "symbolized": "#00 000000000009b80e /system/lib64/libc.so (je_arena_ralloc+142)\n#01 00000000000b098b /system/lib64/libc.so (je_realloc+283)\n#02 0000000000ed47a5 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    sk_realloc_throw(void*, unsigned long)\n                                                    third_party/skia/src/ports/SkMemory_malloc.cpp:57:35\n#03 0000000000dfd565 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkTDArray<unsigned char>::resizeStorageToAtLeast(int)\n                                                    third_party/skia/include/private/SkTDArray.h:364:22\n#04 0000000000dfd532 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkTDArray<unsigned char>::setCount(int)\n                                                    third_party/skia/include/private/SkTDArray.h:145:19\n#05 0000000000dfd4eb <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkTDArray<unsigned char>::adjustCount(int)\n                                                    third_party/skia/include/private/SkTDArray.h:343:15\n#06 0000000000dfd4a4 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkTDArray<unsigned char>::append(int, unsigned char const*)\n                                                    third_party/skia/include/private/SkTDArray.h:176:19\n#07 0000000000f61ead <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrQuadBuffer<(anonymous namespace)::FillRectOp::ColorAndAA>::concat(GrQuadBuffer<(anonymous namespace)::FillRectOp::ColorAndAA> const&)\n                                                    third_party/skia/src/gpu/geometry/GrQuadBuffer.h:308:11\n                                                    (anonymous namespace)::FillRectOp::onCombineIfPossible(GrOp*, GrCaps const&)\n                                                    third_party/skia/src/gpu/ops/GrFillRectOp.cpp:275:0\n#08 0000000000f6591f <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrOp::combineIfPossible(GrOp*, GrCaps const&)\n                                                    third_party/skia/src/gpu/ops/GrOp.cpp:38:25\n#09 0000000000f403f7 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetOpList::OpChain::tryConcat(GrRenderTargetOpList::OpChain::List*, GrProcessorSet::Analysis, GrXferProcessor::DstProxy const&, GrAppliedClip const*, SkRect const&, GrCaps const&, GrOpMemoryPool*, GrAuditTrail*)\n                                                    third_party/skia/src/gpu/GrRenderTargetOpList.cpp:258:31\n#10 0000000000f406bd <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetOpList::OpChain::appendOp(std::__1::unique_ptr<GrOp, std::__1::default_delete<GrOp> >, GrProcessorSet::Analysis, GrXferProcessor::DstProxy const*, GrAppliedClip const*, GrCaps const&, GrOpMemoryPool*, GrAuditTrail*)\n                                                    third_party/skia/src/gpu/GrRenderTargetOpList.cpp:325:16\n#11 0000000000f410b2 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetOpList::recordOp(std::__1::unique_ptr<GrOp, std::__1::default_delete<GrOp> >, GrProcessorSet::Analysis, GrAppliedClip*, GrXferProcessor::DstProxy const*, GrCaps const&)\n                                                    third_party/skia/src/gpu/GrRenderTargetOpList.cpp:696:28\n#12 0000000000f3f287 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetOpList::addDrawOp(std::__1::unique_ptr<GrDrawOp, std::__1::default_delete<GrDrawOp> >, GrProcessorSet::Analysis const&, GrAppliedClip&&, GrXferProcessor::DstProxy const&, GrCaps const&)\n                                                    third_party/skia/src/gpu/GrRenderTargetOpList.h:91:15\n#13 0000000000f378ce <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetContext::addDrawOp(GrClip const&, std::__1::unique_ptr<GrDrawOp, std::__1::default_delete<GrDrawOp> >, std::__1::function<void (GrOp*, unsigned int)> const&)\n                                                    third_party/skia/src/gpu/GrRenderTargetContext.cpp:2632:13\n#14 0000000000f389d9 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetContext::drawFilledQuad(GrClip const&, GrPaint&&, GrAA, GrQuadAAFlags, GrQuad const&, GrQuad const&, GrUserStencilSettings const*)\n                                                    third_party/skia/src/gpu/GrRenderTargetContext.cpp:717:15\n#15 0000000000e26a7c <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetContext::fillRectToRect(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, SkRect const&, SkRect const&)\n                                                    third_party/skia/src/gpu/GrRenderTargetContext.h:120:15\n#16 0000000000f38b85 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    GrRenderTargetContext::drawRect(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, SkRect const&, GrStyle const*)\n                                                    third_party/skia/src/gpu/GrRenderTargetContext.cpp:745:15\n#17 0000000000fb3e9c <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkGpuDevice::drawRect(SkRect const&, SkPaint const&)\n                                                    third_party/skia/src/gpu/SkGpuDevice.cpp:410:27\n#18 0000000000e0bb07 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawRect(SkRect const&, SkPaint const&)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2126:27\n#19 0000000000e0a42b <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawRect(SkRect const&, SkPaint const&)\n                                                    third_party/skia/src/core/SkCanvas.cpp:1731:11\n#20 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#21 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#22 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#23 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#24 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#25 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#26 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#27 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#28 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#29 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#30 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#31 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#32 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#33 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#34 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#35 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#36 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#37 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#38 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#39 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#40 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#41 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#42 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#43 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#44 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#45 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#46 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#47 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#48 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#49 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#50 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#51 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#52 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#53 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#54 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#55 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#56 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#57 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#58 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#59 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#60 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#61 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#62 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#63 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#64 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#65 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#66 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#67 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#68 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#69 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#70 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#71 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#72 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#73 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#74 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#75 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#76 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#77 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#78 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#79 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#80 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#81 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#82 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#83 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#84 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#85 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#86 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#87 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#88 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#89 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#90 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#91 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#92 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#93 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#94 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#95 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#96 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                    third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#97 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                    third_party/skia/src/core/SkBigPicture.cpp:33:5\n#98 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2863:14\n#99 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                    SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                    third_party/skia/src/core/SkCanvas.cpp:2843:15\n#100 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#101 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#102 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#103 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#104 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#105 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#106 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#107 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#108 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#109 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#110 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#111 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#112 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#113 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#114 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#115 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#116 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#117 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#118 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#119 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#120 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#121 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#122 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#123 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#124 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#125 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#126 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#127 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#128 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#129 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#130 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#131 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#132 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#133 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#134 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#135 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#136 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#137 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#138 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#139 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#140 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#141 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#142 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#143 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#144 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#145 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#146 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#147 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#148 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#149 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#150 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#151 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#152 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#153 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#154 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#155 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#156 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#157 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#158 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#159 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#160 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#161 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#162 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#163 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#164 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#165 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#166 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#167 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#168 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#169 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#170 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#171 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#172 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#173 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#174 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#175 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#176 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#177 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#178 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#179 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#180 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#181 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#182 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#183 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#184 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#185 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#186 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#187 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#188 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#189 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#190 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#191 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#192 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#193 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#194 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#195 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#196 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#197 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#198 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#199 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#200 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#201 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#202 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#203 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#204 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#205 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#206 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#207 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#208 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#209 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#210 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#211 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#212 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#213 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#214 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#215 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#216 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#217 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#218 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#219 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#220 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#221 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#222 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#223 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#224 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#225 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#226 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#227 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#228 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#229 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#230 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#231 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#232 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#233 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#234 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#235 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#236 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#237 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#238 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#239 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#240 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#241 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#242 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#243 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#244 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#245 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#246 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#247 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#248 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#249 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#250 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#251 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n#252 0000000000e4b7ad <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*)\n                                                     third_party/skia/src/core/SkRecordDraw.cpp:53:20\n#253 0000000000e86f49 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const\n                                                     third_party/skia/src/core/SkBigPicture.cpp:33:5\n#254 0000000000e0dbfc <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2863:14\n#255 0000000000e0db40 <...>/lib/x86_64/libflutter.so (offset 0xdb0000)\n                                                     SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*)\n                                                     third_party/skia/src/core/SkCanvas.cpp:2843:15\n",
+    "notes": [
+      {
+        "kind": "defaultedToReleaseBuildIdUnavailable",
+        "message": null
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test09.input.txt b/github-label-notifier/symbolizer/test/data/test09.input.txt
new file mode 100644
index 0000000..e16eebe
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test09.input.txt
@@ -0,0 +1,274 @@
+```
+[  +15 ms] Launching lib/main.dart on Android SDK built for x86 64 in debug mode...
+[  +54 ms] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+[        ] Build fingerprint: 'google/sdk_gphone_x86_64/generic_x86_64:9/PSR1.180720.075/5124027:userdebug/dev-keys'
+[        ] Revision: '0'
+[        ] ABI: 'x86_64'
+[        ] pid: 25633, tid: 25655, name: 1.gpu  >>> com.example.app <<<
+[        ] signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x7bc78465aff8
+[   +9 ms] backtrace:
+[        ]     #00 pc 000000000009b80e  /system/lib64/libc.so (je_arena_ralloc+142)
+[        ]     #01 pc 00000000000b098b  /system/lib64/libc.so (je_realloc+283)
+[        ]     #02 pc 0000000000ed47a5  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #03 pc 0000000000dfd565  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #04 pc 0000000000dfd532  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #05 pc 0000000000dfd4eb  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #06 pc 0000000000dfd4a4  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #07 pc 0000000000f61ead  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #08 pc 0000000000f6591f  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #09 pc 0000000000f403f7  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #10 pc 0000000000f406bd  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #11 pc 0000000000f410b2  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #12 pc 0000000000f3f287  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #13 pc 0000000000f378ce  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #14 pc 0000000000f389d9  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #15 pc 0000000000e26a7c  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #16 pc 0000000000f38b85  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #17 pc 0000000000fb3e9c  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #18 pc 0000000000e0bb07  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #19 pc 0000000000e0a42b  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #20 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #21 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #22 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #23 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #24 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #25 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #26 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #27 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #28 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #29 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #30 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #31 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #32 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #33 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #34 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #35 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #36 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #37 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #38 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #39 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #40 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #41 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #42 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #43 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #44 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #45 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #46 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #47 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #48 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #49 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #50 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #51 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #52 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #53 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #54 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #55 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #56 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #57 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #58 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #59 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #60 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #61 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #62 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #63 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #64 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #65 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #66 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #67 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #68 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #69 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #70 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #71 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #72 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #73 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #74 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #75 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #76 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #77 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #78 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #79 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #80 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #81 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #82 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #83 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #84 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #85 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #86 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #87 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #88 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #89 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #90 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #91 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #92 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #93 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #94 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #95 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #96 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #97 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #98 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #99 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[   +1 ms]     #100 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #101 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #102 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #103 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #104 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #105 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #106 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #107 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #108 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #109 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #110 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #111 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #112 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #113 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #114 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #115 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #116 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #117 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #118 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #119 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #120 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #121 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #122 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #123 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #124 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #125 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #126 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #127 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #128 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #129 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #130 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #131 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #132 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #133 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #134 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #135 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #136 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #137 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #138 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #139 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #140 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #141 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #142 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #143 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #144 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #145 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #146 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #147 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #148 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #149 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #150 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #151 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #152 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #153 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #154 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #155 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #156 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #157 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #158 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #159 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #160 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #161 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #162 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #163 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #164 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #165 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #166 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #167 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #168 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #169 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #170 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #171 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #172 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #173 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #174 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #175 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #176 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #177 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #178 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #179 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #180 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #181 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #182 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #183 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #184 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #185 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #186 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #187 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #188 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #189 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #190 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #191 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #192 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #193 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #194 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #195 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #196 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #197 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #198 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #199 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #200 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #201 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #202 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[   +1 ms]     #203 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #204 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #205 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #206 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #207 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #208 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #209 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #210 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #211 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #212 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #213 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #214 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #215 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #216 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #217 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #218 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #219 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #220 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #221 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #222 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #223 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #224 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #225 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #226 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #227 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #228 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #229 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #230 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #231 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #232 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #233 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #234 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #235 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #236 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #237 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #238 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #239 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #240 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #241 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #242 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #243 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #244 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #245 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #246 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #247 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #248 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #249 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #250 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #251 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #252 pc 0000000000e4b7ad  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #253 pc 0000000000e86f49  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #254 pc 0000000000e0dbfc  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+[        ]     #255 pc 0000000000e0db40  /data/app/com.example.app/lib/x86_64/libflutter.so (offset 0xdb0000)
+```
+
+```
+[✓] Flutter (Channel master, v1.8.1-pre.2, on Linux, locale en_US.UTF-8)
+    • Flutter version 1.8.1-pre.2 at ...
+    • Framework revision 1a374d820d (9 days ago), 2019-07-01 16:17:11 -0700
+    • Engine revision 45b66b722e
+    • Dart version 2.4.0
+```
diff --git a/github-label-notifier/symbolizer/test/data/test10.expected.github.txt b/github-label-notifier/symbolizer/test/data/test10.expected.github.txt
new file mode 100644
index 0000000..e262dfb
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test10.expected.github.txt
@@ -0,0 +1,179 @@
+crash from null symbolized using symbols for `b8752bbfff0419c8bf616b602bc59fd28f6a3d1b` `ios-arm64-release`
+```
+#00 000000019007e5c0 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 1185216
+#01 00000001a416c42c libobjc.A.dylib objc_exception_throw + 60
+#02 000000018ff7aa9c CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 121500
+#03 0000000102419508 XX XX + 1742088
+#04 00000001d7f6927c libsystem_platform.dylib 79AAC6D7-C39F-3B6B-882F-AA494B891C56 + 21116
+#05 00000001029708c0 Flutter Flutter + 952512
+                             SkArenaAlloc::RunDtorsOnBlock(char*)
+                             third_party/skia/src/core/SkArenaAlloc.cpp:61:21
+                             SkArenaAlloc::~SkArenaAlloc()
+                             third_party/skia/src/core/SkArenaAlloc.cpp:36:0
+                             SkArenaAlloc::~SkArenaAlloc()
+                             third_party/skia/src/core/SkArenaAlloc.cpp:35:0
+                             SkRecord::~SkRecord()
+                             third_party/skia/src/core/SkRecord.cpp:17:0
+#06 00000001029708c0 Flutter Flutter + 952512
+                             SkArenaAlloc::RunDtorsOnBlock(char*)
+                             third_party/skia/src/core/SkArenaAlloc.cpp:61:21
+                             SkArenaAlloc::~SkArenaAlloc()
+                             third_party/skia/src/core/SkArenaAlloc.cpp:36:0
+                             SkArenaAlloc::~SkArenaAlloc()
+                             third_party/skia/src/core/SkArenaAlloc.cpp:35:0
+                             SkRecord::~SkRecord()
+                             third_party/skia/src/core/SkRecord.cpp:17:0
+#07 0000000102970848 Flutter Flutter + 952392
+                             SkRecord::~SkRecord()
+                             third_party/skia/src/core/SkRecord.cpp:12:23
+                             SkRecord::~SkRecord()
+                             third_party/skia/src/core/SkRecord.cpp:12:0
+#08 00000001029c0b68 Flutter Flutter + 1280872
+                             SkRefCntBase::unref() const
+                             third_party/skia/include/core/SkRefCnt.h:77:19
+                             void SkSafeUnref<SkRecord const>(SkRecord const*)
+                             third_party/skia/include/core/SkRefCnt.h:150:0
+                             sk_sp<SkRecord const>::~sk_sp()
+                             third_party/skia/include/core/SkRefCnt.h:251:0
+                             sk_sp<SkRecord const>::~sk_sp()
+                             third_party/skia/include/core/SkRefCnt.h:250:0
+                             SkBigPicture::~SkBigPicture()
+                             third_party/skia/src/core/SkBigPicture.h:22:0
+                             SkBigPicture::~SkBigPicture()
+                             third_party/skia/src/core/SkBigPicture.h:22:0
+                             SkBigPicture::~SkBigPicture()
+                             third_party/skia/src/core/SkBigPicture.h:22:0
+#09 0000000102914a40 Flutter Flutter + 576064
+                             SkRefCntBase::unref() const
+                             third_party/skia/include/core/SkRefCnt.h:77:19
+                             flutter::SkiaUnrefQueue::Drain()
+                             flutter/flow/skia_gpu_object.cc:44:0
+#10 00000001028c344c Flutter Flutter + 242764
+                             std::__1::__function::__value_func<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)
+                             flutter/fml/message_loop_impl.cc:130:0
+#11 00000001028c53c0 Flutter Flutter + 250816
+                             fml::MessageLoopImpl::RunExpiredTasksNow()
+                             flutter/fml/message_loop_impl.cc:143:3
+                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0
+#12 000000018fffc050 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 651344
+#13 000000018fffbc50 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 650320
+#14 000000018fffb0c4 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 647364
+#15 000000018fff5178 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 622968
+#16 000000018fff44bc CoreFoundation CFRunLoopRunSpecific + 600
+#17 00000001028c529c Flutter Flutter + 250524
+                             fml::MessageLoopDarwin::Run()
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:46:20
+#18 00000001028c4c24 Flutter Flutter + 248868
+                             fml::MessageLoopImpl::DoRun()
+                             flutter/fml/message_loop_impl.cc:96:3
+                             fml::MessageLoop::Run()
+                             flutter/fml/message_loop.cc:49:0
+                             fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const
+                             flutter/fml/thread.cc:36:0
+                             decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:342:0
+                             void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:352:0
+#19 00000001d7f6dca8 libsystem_pthread.dylib _pthread_start + 320
+#20 00000001d7f76788 libsystem_pthread.dylib thread_start + 8
+
+```
+
+crash from null symbolized using symbols for `b8752bbfff0419c8bf616b602bc59fd28f6a3d1b` `ios-arm64-release`
+```
+#00 0000000192b825c0 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 1185216
+#01 00000001a6bfc42c libobjc.A.dylib objc_exception_throw + 60
+#02 0000000192a7ea9c CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 121500
+#03 00000001044ed508 XX XX + 1742088
+#04 00000001da0d627c libsystem_platform.dylib DAE36DD6-F44A-39F4-9924-261898BD82CC + 21116
+#05 00000001da0dbc74 libsystem_pthread.dylib pthread_kill + 272
+#06 000000019bc84bb4 libsystem_c.dylib abort + 104
+#07 00000001a1bd24dc libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 124124
+#08 00000001a1bd2768 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 124776
+#09 00000001a1bbde84 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 40580
+#10 00000001a1bbaeb8 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 28344
+#11 00000001a1bbbf30 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 32560
+#12 0000000104d577d0 Flutter Flutter + 5634000
+                             dart::FinalizablePersistentHandle::Finalize(dart::IsolateGroup*, dart::FinalizablePersistentHandle*)
+                             third_party/dart/runtime/vm/dart_api_impl.cc:729:5
+                             dart::FinalizablePersistentHandle::UpdateUnreachable(dart::IsolateGroup*)
+                             third_party/dart/runtime/vm/dart_api_state.h:273:0
+                             dart::ScavengerWeakVisitor::VisitHandle(unsigned long)
+                             third_party/dart/runtime/vm/heap/scavenger.cc:454:0
+#13 0000000104d5859c Flutter Flutter + 5637532
+                             dart::Handles<5, 64, 0>::HandlesBlock::Visit(dart::HandleVisitor*)
+                             third_party/dart/runtime/vm/handles_impl.h:302:14
+                             dart::Handles<5, 64, 0>::Visit(dart::HandleVisitor*)
+                             third_party/dart/runtime/vm/handles_impl.h:55:0
+                             dart::FinalizablePersistentHandles::VisitHandles(dart::HandleVisitor*)
+                             third_party/dart/runtime/vm/dart_api_state.h:581:0
+                             dart::ApiState::VisitWeakHandlesUnlocked(dart::HandleVisitor*)
+                             third_party/dart/runtime/vm/dart_api_state.h:792:0
+                             dart::IsolateGroup::VisitWeakPersistentHandles(dart::HandleVisitor*)
+                             third_party/dart/runtime/vm/isolate.cc:2952:0
+                             dart::Scavenger::MournWeakHandles()
+                             third_party/dart/runtime/vm/heap/scavenger.cc:1131:0
+                             dart::Scavenger::Scavenge()
+                             third_party/dart/runtime/vm/heap/scavenger.cc:1516:0
+#14 0000000104d4cd64 Flutter Flutter + 5590372
+                             dart::Heap::CollectNewSpaceGarbage(dart::Thread*, dart::Heap::GCReason)
+                             third_party/dart/runtime/vm/heap/heap.cc:467:18
+#15 0000000104d4e280 Flutter Flutter + 5595776
+                             dart::Heap::NotifyIdle(long long)
+                             third_party/dart/runtime/vm/heap/heap.cc:378:5
+#16 0000000104c6166c Flutter Flutter + 4626028
+                             dart::IdleTimeHandler::NotifyIdle(long long)
+                             third_party/dart/runtime/vm/isolate.cc:249:12
+                             Dart_NotifyIdle
+                             third_party/dart/runtime/vm/dart_api_impl.cc:1910:0
+                             flutter::RuntimeController::NotifyIdle(long long, unsigned long)
+                             flutter/runtime/runtime_controller.cc:251:0
+#17 0000000104af5b9c Flutter Flutter + 3136412
+                             flutter::Engine::NotifyIdle(long long)
+                             flutter/shell/common/engine.cc:260:24
+#18 000000010483344c Flutter Flutter + 242764
+                             std::__1::__function::__value_func<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)
+                             flutter/fml/message_loop_impl.cc:130:0
+#19 00000001048353c0 Flutter Flutter + 250816
+                             fml::MessageLoopImpl::RunExpiredTasksNow()
+                             flutter/fml/message_loop_impl.cc:143:3
+                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0
+#20 0000000192b00050 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 651344
+#21 0000000192affc50 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 650320
+#22 0000000192aff0c4 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 647364
+#23 0000000192af9178 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 622968
+#24 0000000192af84bc CoreFoundation CFRunLoopRunSpecific + 600
+#25 000000010483529c Flutter Flutter + 250524
+                             fml::MessageLoopDarwin::Run()
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:46:20
+#26 0000000104834c24 Flutter Flutter + 248868
+                             fml::MessageLoopImpl::DoRun()
+                             flutter/fml/message_loop_impl.cc:96:3
+                             fml::MessageLoop::Run()
+                             flutter/fml/message_loop.cc:49:0
+                             fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const
+                             flutter/fml/thread.cc:36:0
+                             decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:342:0
+                             void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:352:0
+#27 00000001da0daca8 libsystem_pthread.dylib _pthread_start + 320
+#28 00000001da0e3788 libsystem_pthread.dylib thread_start + 8
+
+```
+
+<!-- {"symbolized":[1001]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test10.expected.txt b/github-label-notifier/symbolizer/test/data/test10.expected.txt
new file mode 100644
index 0000000..9fafa7b
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test10.expected.txt
@@ -0,0 +1,498 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "0",
+          "binary": "CoreFoundation",
+          "pc": 6711403968,
+          "symbol": "52963DBA-FA89-36C2-8262-28B9776F8C12",
+          "offset": 1185216,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "1",
+          "binary": "libobjc.A.dylib",
+          "pc": 7047922732,
+          "symbol": "objc_exception_throw",
+          "offset": 60,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "2",
+          "binary": "CoreFoundation",
+          "pc": 6710340252,
+          "symbol": "52963DBA-FA89-36C2-8262-28B9776F8C12",
+          "offset": 121500,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "3",
+          "binary": "XX",
+          "pc": 4332819720,
+          "symbol": "XX",
+          "offset": 1742088,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "4",
+          "binary": "libsystem_platform.dylib",
+          "pc": 7918228092,
+          "symbol": "79AAC6D7-C39F-3B6B-882F-AA494B891C56",
+          "offset": 21116,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "5",
+          "binary": "Flutter",
+          "pc": 4338419904,
+          "symbol": "Flutter",
+          "offset": 952512,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "6",
+          "binary": "Flutter",
+          "pc": 4338419904,
+          "symbol": "Flutter",
+          "offset": 952512,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "7",
+          "binary": "Flutter",
+          "pc": 4338419784,
+          "symbol": "Flutter",
+          "offset": 952392,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "8",
+          "binary": "Flutter",
+          "pc": 4338748264,
+          "symbol": "Flutter",
+          "offset": 1280872,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "9",
+          "binary": "Flutter",
+          "pc": 4338043456,
+          "symbol": "Flutter",
+          "offset": 576064,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "10",
+          "binary": "Flutter",
+          "pc": 4337710156,
+          "symbol": "Flutter",
+          "offset": 242764,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "11",
+          "binary": "Flutter",
+          "pc": 4337718208,
+          "symbol": "Flutter",
+          "offset": 250816,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "12",
+          "binary": "CoreFoundation",
+          "pc": 6710870096,
+          "symbol": "52963DBA-FA89-36C2-8262-28B9776F8C12",
+          "offset": 651344,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "13",
+          "binary": "CoreFoundation",
+          "pc": 6710869072,
+          "symbol": "52963DBA-FA89-36C2-8262-28B9776F8C12",
+          "offset": 650320,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "14",
+          "binary": "CoreFoundation",
+          "pc": 6710866116,
+          "symbol": "52963DBA-FA89-36C2-8262-28B9776F8C12",
+          "offset": 647364,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "15",
+          "binary": "CoreFoundation",
+          "pc": 6710841720,
+          "symbol": "52963DBA-FA89-36C2-8262-28B9776F8C12",
+          "offset": 622968,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "16",
+          "binary": "CoreFoundation",
+          "pc": 6710838460,
+          "symbol": "CFRunLoopRunSpecific",
+          "offset": 600,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "17",
+          "binary": "Flutter",
+          "pc": 4337717916,
+          "symbol": "Flutter",
+          "offset": 250524,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "18",
+          "binary": "Flutter",
+          "pc": 4337716260,
+          "symbol": "Flutter",
+          "offset": 248868,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "19",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7918247080,
+          "symbol": "_pthread_start",
+          "offset": 320,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "20",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7918282632,
+          "symbol": "thread_start",
+          "offset": 8,
+          "location": "",
+          "runtimeType": "ios"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "b8752bbfff0419c8bf616b602bc59fd28f6a3d1b",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 000000019007e5c0 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 1185216\n#01 00000001a416c42c libobjc.A.dylib objc_exception_throw + 60\n#02 000000018ff7aa9c CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 121500\n#03 0000000102419508 XX XX + 1742088\n#04 00000001d7f6927c libsystem_platform.dylib 79AAC6D7-C39F-3B6B-882F-AA494B891C56 + 21116\n#05 00000001029708c0 Flutter Flutter + 952512\n                             SkArenaAlloc::RunDtorsOnBlock(char*)\n                             third_party/skia/src/core/SkArenaAlloc.cpp:61:21\n                             SkArenaAlloc::~SkArenaAlloc()\n                             third_party/skia/src/core/SkArenaAlloc.cpp:36:0\n                             SkArenaAlloc::~SkArenaAlloc()\n                             third_party/skia/src/core/SkArenaAlloc.cpp:35:0\n                             SkRecord::~SkRecord()\n                             third_party/skia/src/core/SkRecord.cpp:17:0\n#06 00000001029708c0 Flutter Flutter + 952512\n                             SkArenaAlloc::RunDtorsOnBlock(char*)\n                             third_party/skia/src/core/SkArenaAlloc.cpp:61:21\n                             SkArenaAlloc::~SkArenaAlloc()\n                             third_party/skia/src/core/SkArenaAlloc.cpp:36:0\n                             SkArenaAlloc::~SkArenaAlloc()\n                             third_party/skia/src/core/SkArenaAlloc.cpp:35:0\n                             SkRecord::~SkRecord()\n                             third_party/skia/src/core/SkRecord.cpp:17:0\n#07 0000000102970848 Flutter Flutter + 952392\n                             SkRecord::~SkRecord()\n                             third_party/skia/src/core/SkRecord.cpp:12:23\n                             SkRecord::~SkRecord()\n                             third_party/skia/src/core/SkRecord.cpp:12:0\n#08 00000001029c0b68 Flutter Flutter + 1280872\n                             SkRefCntBase::unref() const\n                             third_party/skia/include/core/SkRefCnt.h:77:19\n                             void SkSafeUnref<SkRecord const>(SkRecord const*)\n                             third_party/skia/include/core/SkRefCnt.h:150:0\n                             sk_sp<SkRecord const>::~sk_sp()\n                             third_party/skia/include/core/SkRefCnt.h:251:0\n                             sk_sp<SkRecord const>::~sk_sp()\n                             third_party/skia/include/core/SkRefCnt.h:250:0\n                             SkBigPicture::~SkBigPicture()\n                             third_party/skia/src/core/SkBigPicture.h:22:0\n                             SkBigPicture::~SkBigPicture()\n                             third_party/skia/src/core/SkBigPicture.h:22:0\n                             SkBigPicture::~SkBigPicture()\n                             third_party/skia/src/core/SkBigPicture.h:22:0\n#09 0000000102914a40 Flutter Flutter + 576064\n                             SkRefCntBase::unref() const\n                             third_party/skia/include/core/SkRefCnt.h:77:19\n                             flutter::SkiaUnrefQueue::Drain()\n                             flutter/flow/skia_gpu_object.cc:44:0\n#10 00000001028c344c Flutter Flutter + 242764\n                             std::__1::__function::__value_func<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                             flutter/fml/message_loop_impl.cc:130:0\n#11 00000001028c53c0 Flutter Flutter + 250816\n                             fml::MessageLoopImpl::RunExpiredTasksNow()\n                             flutter/fml/message_loop_impl.cc:143:3\n                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0\n#12 000000018fffc050 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 651344\n#13 000000018fffbc50 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 650320\n#14 000000018fffb0c4 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 647364\n#15 000000018fff5178 CoreFoundation 52963DBA-FA89-36C2-8262-28B9776F8C12 + 622968\n#16 000000018fff44bc CoreFoundation CFRunLoopRunSpecific + 600\n#17 00000001028c529c Flutter Flutter + 250524\n                             fml::MessageLoopDarwin::Run()\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:46:20\n#18 00000001028c4c24 Flutter Flutter + 248868\n                             fml::MessageLoopImpl::DoRun()\n                             flutter/fml/message_loop_impl.cc:96:3\n                             fml::MessageLoop::Run()\n                             flutter/fml/message_loop.cc:49:0\n                             fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const\n                             flutter/fml/thread.cc:36:0\n                             decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:342:0\n                             void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:352:0\n#19 00000001d7f6dca8 libsystem_pthread.dylib _pthread_start + 320\n#20 00000001d7f76788 libsystem_pthread.dylib thread_start + 8\n",
+    "notes": []
+  },
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "0",
+          "binary": "CoreFoundation",
+          "pc": 6756509120,
+          "symbol": "472C9193-115D-34CD-AD1D-0E7E091C9432",
+          "offset": 1185216,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "1",
+          "binary": "libobjc.A.dylib",
+          "pc": 7092552748,
+          "symbol": "objc_exception_throw",
+          "offset": 60,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "2",
+          "binary": "CoreFoundation",
+          "pc": 6755445404,
+          "symbol": "472C9193-115D-34CD-AD1D-0E7E091C9432",
+          "offset": 121500,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "3",
+          "binary": "XX",
+          "pc": 4367242504,
+          "symbol": "XX",
+          "offset": 1742088,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "4",
+          "binary": "libsystem_platform.dylib",
+          "pc": 7953277564,
+          "symbol": "DAE36DD6-F44A-39F4-9924-261898BD82CC",
+          "offset": 21116,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "5",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7953300596,
+          "symbol": "pthread_kill",
+          "offset": 272,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "6",
+          "binary": "libsystem_c.dylib",
+          "pc": 6908562356,
+          "symbol": "abort",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "7",
+          "binary": "libsystem_malloc.dylib",
+          "pc": 7008494812,
+          "symbol": "C39547F4-E0DF-3637-85A6-FD564AAB9C45",
+          "offset": 124124,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "8",
+          "binary": "libsystem_malloc.dylib",
+          "pc": 7008495464,
+          "symbol": "C39547F4-E0DF-3637-85A6-FD564AAB9C45",
+          "offset": 124776,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "9",
+          "binary": "libsystem_malloc.dylib",
+          "pc": 7008411268,
+          "symbol": "C39547F4-E0DF-3637-85A6-FD564AAB9C45",
+          "offset": 40580,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "10",
+          "binary": "libsystem_malloc.dylib",
+          "pc": 7008399032,
+          "symbol": "C39547F4-E0DF-3637-85A6-FD564AAB9C45",
+          "offset": 28344,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "11",
+          "binary": "libsystem_malloc.dylib",
+          "pc": 7008403248,
+          "symbol": "C39547F4-E0DF-3637-85A6-FD564AAB9C45",
+          "offset": 32560,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "12",
+          "binary": "Flutter",
+          "pc": 4376066000,
+          "symbol": "Flutter",
+          "offset": 5634000,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "13",
+          "binary": "Flutter",
+          "pc": 4376069532,
+          "symbol": "Flutter",
+          "offset": 5637532,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "14",
+          "binary": "Flutter",
+          "pc": 4376022372,
+          "symbol": "Flutter",
+          "offset": 5590372,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "15",
+          "binary": "Flutter",
+          "pc": 4376027776,
+          "symbol": "Flutter",
+          "offset": 5595776,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "16",
+          "binary": "Flutter",
+          "pc": 4375058028,
+          "symbol": "Flutter",
+          "offset": 4626028,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "17",
+          "binary": "Flutter",
+          "pc": 4373568412,
+          "symbol": "Flutter",
+          "offset": 3136412,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "18",
+          "binary": "Flutter",
+          "pc": 4370674764,
+          "symbol": "Flutter",
+          "offset": 242764,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "19",
+          "binary": "Flutter",
+          "pc": 4370682816,
+          "symbol": "Flutter",
+          "offset": 250816,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "20",
+          "binary": "CoreFoundation",
+          "pc": 6755975248,
+          "symbol": "472C9193-115D-34CD-AD1D-0E7E091C9432",
+          "offset": 651344,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "21",
+          "binary": "CoreFoundation",
+          "pc": 6755974224,
+          "symbol": "472C9193-115D-34CD-AD1D-0E7E091C9432",
+          "offset": 650320,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "22",
+          "binary": "CoreFoundation",
+          "pc": 6755971268,
+          "symbol": "472C9193-115D-34CD-AD1D-0E7E091C9432",
+          "offset": 647364,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "23",
+          "binary": "CoreFoundation",
+          "pc": 6755946872,
+          "symbol": "472C9193-115D-34CD-AD1D-0E7E091C9432",
+          "offset": 622968,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "24",
+          "binary": "CoreFoundation",
+          "pc": 6755943612,
+          "symbol": "CFRunLoopRunSpecific",
+          "offset": 600,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "25",
+          "binary": "Flutter",
+          "pc": 4370682524,
+          "symbol": "Flutter",
+          "offset": 250524,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "26",
+          "binary": "Flutter",
+          "pc": 4370680868,
+          "symbol": "Flutter",
+          "offset": 248868,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "27",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7953296552,
+          "symbol": "_pthread_start",
+          "offset": 320,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "28",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7953332104,
+          "symbol": "thread_start",
+          "offset": 8,
+          "location": "",
+          "runtimeType": "ios"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "b8752bbfff0419c8bf616b602bc59fd28f6a3d1b",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 0000000192b825c0 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 1185216\n#01 00000001a6bfc42c libobjc.A.dylib objc_exception_throw + 60\n#02 0000000192a7ea9c CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 121500\n#03 00000001044ed508 XX XX + 1742088\n#04 00000001da0d627c libsystem_platform.dylib DAE36DD6-F44A-39F4-9924-261898BD82CC + 21116\n#05 00000001da0dbc74 libsystem_pthread.dylib pthread_kill + 272\n#06 000000019bc84bb4 libsystem_c.dylib abort + 104\n#07 00000001a1bd24dc libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 124124\n#08 00000001a1bd2768 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 124776\n#09 00000001a1bbde84 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 40580\n#10 00000001a1bbaeb8 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 28344\n#11 00000001a1bbbf30 libsystem_malloc.dylib C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 32560\n#12 0000000104d577d0 Flutter Flutter + 5634000\n                             dart::FinalizablePersistentHandle::Finalize(dart::IsolateGroup*, dart::FinalizablePersistentHandle*)\n                             third_party/dart/runtime/vm/dart_api_impl.cc:729:5\n                             dart::FinalizablePersistentHandle::UpdateUnreachable(dart::IsolateGroup*)\n                             third_party/dart/runtime/vm/dart_api_state.h:273:0\n                             dart::ScavengerWeakVisitor::VisitHandle(unsigned long)\n                             third_party/dart/runtime/vm/heap/scavenger.cc:454:0\n#13 0000000104d5859c Flutter Flutter + 5637532\n                             dart::Handles<5, 64, 0>::HandlesBlock::Visit(dart::HandleVisitor*)\n                             third_party/dart/runtime/vm/handles_impl.h:302:14\n                             dart::Handles<5, 64, 0>::Visit(dart::HandleVisitor*)\n                             third_party/dart/runtime/vm/handles_impl.h:55:0\n                             dart::FinalizablePersistentHandles::VisitHandles(dart::HandleVisitor*)\n                             third_party/dart/runtime/vm/dart_api_state.h:581:0\n                             dart::ApiState::VisitWeakHandlesUnlocked(dart::HandleVisitor*)\n                             third_party/dart/runtime/vm/dart_api_state.h:792:0\n                             dart::IsolateGroup::VisitWeakPersistentHandles(dart::HandleVisitor*)\n                             third_party/dart/runtime/vm/isolate.cc:2952:0\n                             dart::Scavenger::MournWeakHandles()\n                             third_party/dart/runtime/vm/heap/scavenger.cc:1131:0\n                             dart::Scavenger::Scavenge()\n                             third_party/dart/runtime/vm/heap/scavenger.cc:1516:0\n#14 0000000104d4cd64 Flutter Flutter + 5590372\n                             dart::Heap::CollectNewSpaceGarbage(dart::Thread*, dart::Heap::GCReason)\n                             third_party/dart/runtime/vm/heap/heap.cc:467:18\n#15 0000000104d4e280 Flutter Flutter + 5595776\n                             dart::Heap::NotifyIdle(long long)\n                             third_party/dart/runtime/vm/heap/heap.cc:378:5\n#16 0000000104c6166c Flutter Flutter + 4626028\n                             dart::IdleTimeHandler::NotifyIdle(long long)\n                             third_party/dart/runtime/vm/isolate.cc:249:12\n                             Dart_NotifyIdle\n                             third_party/dart/runtime/vm/dart_api_impl.cc:1910:0\n                             flutter::RuntimeController::NotifyIdle(long long, unsigned long)\n                             flutter/runtime/runtime_controller.cc:251:0\n#17 0000000104af5b9c Flutter Flutter + 3136412\n                             flutter::Engine::NotifyIdle(long long)\n                             flutter/shell/common/engine.cc:260:24\n#18 000000010483344c Flutter Flutter + 242764\n                             std::__1::__function::__value_func<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                             flutter/fml/message_loop_impl.cc:130:0\n#19 00000001048353c0 Flutter Flutter + 250816\n                             fml::MessageLoopImpl::RunExpiredTasksNow()\n                             flutter/fml/message_loop_impl.cc:143:3\n                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0\n#20 0000000192b00050 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 651344\n#21 0000000192affc50 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 650320\n#22 0000000192aff0c4 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 647364\n#23 0000000192af9178 CoreFoundation 472C9193-115D-34CD-AD1D-0E7E091C9432 + 622968\n#24 0000000192af84bc CoreFoundation CFRunLoopRunSpecific + 600\n#25 000000010483529c Flutter Flutter + 250524\n                             fml::MessageLoopDarwin::Run()\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:46:20\n#26 0000000104834c24 Flutter Flutter + 248868\n                             fml::MessageLoopImpl::DoRun()\n                             flutter/fml/message_loop_impl.cc:96:3\n                             fml::MessageLoop::Run()\n                             flutter/fml/message_loop.cc:49:0\n                             fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const\n                             flutter/fml/thread.cc:36:0\n                             decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:342:0\n                             void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:352:0\n#27 00000001da0daca8 libsystem_pthread.dylib _pthread_start + 320\n#28 00000001da0e3788 libsystem_pthread.dylib thread_start + 8\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test10.input.txt b/github-label-notifier/symbolizer/test/data/test10.input.txt
new file mode 100644
index 0000000..fb0a0e7
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test10.input.txt
@@ -0,0 +1,66 @@
+@flutter-symbolizer-bot symbolize this force ios arm64
+
+```
+    0 CoreFoundation 0x000000019007e5c0 52963DBA-FA89-36C2-8262-28B9776F8C12 + 1185216
+    1 libobjc.A.dylib 0x00000001a416c42c objc_exception_throw + 60
+    2 CoreFoundation 0x000000018ff7aa9c 52963DBA-FA89-36C2-8262-28B9776F8C12 + 121500
+    3 XX 0x0000000102419508 XX + 1742088
+    4 libsystem_platform.dylib 0x00000001d7f6927c 79AAC6D7-C39F-3B6B-882F-AA494B891C56 + 21116
+    5 Flutter 0x00000001029708c0 Flutter + 952512
+    6 Flutter 0x00000001029708c0 Flutter + 952512
+    7 Flutter 0x0000000102970848 Flutter + 952392
+    8 Flutter 0x00000001029c0b68 Flutter + 1280872
+    9 Flutter 0x0000000102914a40 Flutter + 576064
+    10 Flutter 0x00000001028c344c Flutter + 242764
+    11 Flutter 0x00000001028c53c0 Flutter + 250816
+    12 CoreFoundation 0x000000018fffc050 52963DBA-FA89-36C2-8262-28B9776F8C12 + 651344
+    13 CoreFoundation 0x000000018fffbc50 52963DBA-FA89-36C2-8262-28B9776F8C12 + 650320
+    14 CoreFoundation 0x000000018fffb0c4 52963DBA-FA89-36C2-8262-28B9776F8C12 + 647364
+    15 CoreFoundation 0x000000018fff5178 52963DBA-FA89-36C2-8262-28B9776F8C12 + 622968
+    16 CoreFoundation 0x000000018fff44bc CFRunLoopRunSpecific + 600
+    17 Flutter 0x00000001028c529c Flutter + 250524
+    18 Flutter 0x00000001028c4c24 Flutter + 248868
+    19 libsystem_pthread.dylib 0x00000001d7f6dca8 _pthread_start + 320
+    20 libsystem_pthread.dylib 0x00000001d7f76788 thread_start + 8
+```
+
+```
+    0 CoreFoundation 0x0000000192b825c0 472C9193-115D-34CD-AD1D-0E7E091C9432 + 1185216
+    1 libobjc.A.dylib 0x00000001a6bfc42c objc_exception_throw + 60
+    2 CoreFoundation 0x0000000192a7ea9c 472C9193-115D-34CD-AD1D-0E7E091C9432 + 121500
+    3 XX 0x00000001044ed508 XX + 1742088
+    4 libsystem_platform.dylib 0x00000001da0d627c DAE36DD6-F44A-39F4-9924-261898BD82CC + 21116
+    5 libsystem_pthread.dylib 0x00000001da0dbc74 pthread_kill + 272
+    6 libsystem_c.dylib 0x000000019bc84bb4 abort + 104
+    7 libsystem_malloc.dylib 0x00000001a1bd24dc C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 124124
+    8 libsystem_malloc.dylib 0x00000001a1bd2768 C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 124776
+    9 libsystem_malloc.dylib 0x00000001a1bbde84 C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 40580
+    10 libsystem_malloc.dylib 0x00000001a1bbaeb8 C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 28344
+    11 libsystem_malloc.dylib 0x00000001a1bbbf30 C39547F4-E0DF-3637-85A6-FD564AAB9C45 + 32560
+    12 Flutter 0x0000000104d577d0 Flutter + 5634000
+    13 Flutter 0x0000000104d5859c Flutter + 5637532
+    14 Flutter 0x0000000104d4cd64 Flutter + 5590372
+    15 Flutter 0x0000000104d4e280 Flutter + 5595776
+    16 Flutter 0x0000000104c6166c Flutter + 4626028
+    17 Flutter 0x0000000104af5b9c Flutter + 3136412
+    18 Flutter 0x000000010483344c Flutter + 242764
+    19 Flutter 0x00000001048353c0 Flutter + 250816
+    20 CoreFoundation 0x0000000192b00050 472C9193-115D-34CD-AD1D-0E7E091C9432 + 651344
+    21 CoreFoundation 0x0000000192affc50 472C9193-115D-34CD-AD1D-0E7E091C9432 + 650320
+    22 CoreFoundation 0x0000000192aff0c4 472C9193-115D-34CD-AD1D-0E7E091C9432 + 647364
+    23 CoreFoundation 0x0000000192af9178 472C9193-115D-34CD-AD1D-0E7E091C9432 + 622968
+    24 CoreFoundation 0x0000000192af84bc CFRunLoopRunSpecific + 600
+    25 Flutter 0x000000010483529c Flutter + 250524
+    26 Flutter 0x0000000104834c24 Flutter + 248868
+    27 libsystem_pthread.dylib 0x00000001da0daca8 _pthread_start + 320
+    28 libsystem_pthread.dylib 0x00000001da0e3788 thread_start + 8
+)
+```
+
+```
+[✓] Flutter (Channel stable, 1.22.2, on Mac OS X 10.15.7 19H2, locale ...)
+    • Flutter version 1.22.2 at ...
+    • Framework revision 84f3d28555 (7 days ago), 2020-10-15 16:26:19 -0700
+    • Engine revision b8752bbfff
+    • Dart version 2.10.2
+```
diff --git a/github-label-notifier/symbolizer/test/data/test11.expected.github.txt b/github-label-notifier/symbolizer/test/data/test11.expected.github.txt
new file mode 100644
index 0000000..df992f4
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test11.expected.github.txt
@@ -0,0 +1,279 @@
+crash from null symbolized using symbols for `c9506cb8e93e5e8879152ff5c948b175abb5b997` `ios-arm64-release`
+```
+#00 0000000185d3ad88 libsystem_kernel.dylib __pthread_kill + 8
+#01 0000000185c531e8 libsystem_pthread.dylib pthread_kill$VARIANT$mp + 136 (pthread.c:145)
+#02 0000000185ba6644 libsystem_c.dylib abort + 100 (abort.c:11)
+#03 0000000102c48240 Flutter 0x1027f8000 + 4522560
+                             dart::Assert::Fail(char const*, ...)
+                             third_party/dart/runtime/platform/assert.cc:44:3
+#04 0000000102cfbea0 Flutter 0x1027f8000 + 5258912
+                             dart::SaveUnlinkedCall(dart::Zone*, dart::Isolate*, unsigned long, dart::UnlinkedCall const&)
+                             third_party/dart/runtime/vm/runtime_entry.cc:1568:3
+                             dart::DRT_HelperUnlinkedCall(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments)
+                             third_party/dart/runtime/vm/runtime_entry.cc:1660:0
+                             dart::DRT_UnlinkedCall(dart::NativeArguments)
+                             third_party/dart/runtime/vm/runtime_entry.cc:1596:0
+#05 000000010527820c App Precompiled_Stub_CallToRuntime + 84
+#06 0000000105277b60 App Precompiled_Stub_UnlinkedCall + 44
+#07 00000001053d7ff8 App Precompiled_AnimatedWidgetBaseState_initState_4854 + 76
+#08 00000001054eff5c App Precompiled_StatefulElement__firstBuild_396042623_8467 + 80
+#09 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#10 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#11 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#12 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#13 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#14 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#15 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#16 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#17 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#18 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#19 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#20 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#21 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#22 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#23 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#24 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#25 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#26 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#27 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#28 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#29 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#30 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#31 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#32 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#33 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#34 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#35 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#36 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#37 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#38 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#39 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#40 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#41 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#42 00000001054bd014 App Precompiled_SingleChildRenderObjectElement_mount_7858 + 432
+#43 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#44 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#45 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#46 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#47 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#48 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#49 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#50 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#51 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#52 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#53 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#54 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#55 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#56 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#57 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#58 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#59 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#60 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#61 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#62 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#63 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#64 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#65 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#66 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#67 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#68 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#69 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#70 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#71 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#72 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#73 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#74 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#75 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#76 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#77 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#78 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#79 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#80 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#81 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#82 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#83 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#84 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#85 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#86 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#87 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#88 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#89 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#90 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#91 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#92 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#93 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#94 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#95 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#96 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#97 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#98 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#99 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#100 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#101 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#102 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#103 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#104 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#105 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#106 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#107 00000001054bd014 App Precompiled_SingleChildRenderObjectElement_mount_7858 + 432
+#108 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#109 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#110 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#111 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#112 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#113 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#114 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#115 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#116 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#117 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#118 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#119 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#120 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#121 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#122 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#123 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#124 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#125 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#126 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#127 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#128 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#129 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#130 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#131 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#132 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#133 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#134 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#135 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#136 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#137 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#138 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#139 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#140 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#141 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#142 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#143 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#144 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#145 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#146 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#147 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104
+#148 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#149 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#150 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+#151 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#152 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#153 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#154 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#155 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#156 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#157 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#158 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#159 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#160 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#161 00000001054be1cc App Precompiled___DefaultInheritedProviderScopeElement_InheritedElement__InheritedProviderScopeMixin_... + 72
+#162 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#163 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#164 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#165 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#166 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#167 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484
+#168 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96
+#169 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+#170 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76
+#171 00000001054bd270 App Precompiled__SingleChildStatelessElement_StatelessElement_SingleChildWidgetElementMixin_524485488... + 60
+#172 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404
+#173 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508
+#174 00000001052fc01c App Precompiled_RenderObjectToWidgetElement__rebuild_414399801_1965 + 84
+#175 00000001054bd094 App Precompiled_RenderObjectToWidgetElement_mount_7859 + 60
+#176 00000001055a840c App Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree__anonymous_closure__10738 + 84
+#177 00000001052e9614 App Precompiled_BuildOwner_buildScope_1653 + 256
+#178 0000000105300f58 App Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree_2058 + 288
+#179 00000001052fd3d0 App Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa... + 168
+#180 00000001055a8540 App Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa... + 76
+#181 000000010529294c App Precompiled_____rootRun_4048458_315 + 156
+#182 0000000105292bf0 App Precompiled_____rootRun_4048458__rootRun_4048458_316 + 504
+#183 00000001054ffae4 App Precompiled__CustomZone_4048458_run_8789 + 240
+#184 0000000105500850 App Precompiled__CustomZone_4048458_runGuarded_8808 + 52
+#185 0000000105585974 App Precompiled__CustomZone_4048458_bindCallbackGuarded__anonymous_closure__10427 + 76
+#186 0000000105292998 App Precompiled_____rootRun_4048458_315 + 232
+#187 0000000105292bf0 App Precompiled_____rootRun_4048458__rootRun_4048458_316 + 504
+#188 00000001054ffae4 App Precompiled__CustomZone_4048458_run_8789 + 240
+#189 00000001055857bc App Precompiled__CustomZone_4048458_bindCallback__anonymous_closure__10425 + 148
+#190 0000000105589ba0 App Precompiled_Timer__createTimer_4048458__anonymous_closure__10485 + 228
+#191 00000001055c3114 App Precompiled__Closure_0150898_call_11047 + 72
+#192 00000001054a0d0c App Precompiled__Timer_1026248__runTimers_1026248_7429 + 720
+#193 00000001054a0964 App Precompiled__Timer_1026248__handleMessage_1026248_7427 + 140
+#194 00000001054a0a1c App Precompiled__Timer_1026248__handleMessage_1026248__handleMessage_1026248_7428 + 112
+#195 00000001055c3114 App Precompiled__Closure_0150898_call_11047 + 72
+#196 000000010529dc08 App Precompiled__RawReceivePortImpl_1026248__handleMessage_1026248_473 + 52
+#197 0000000105277de4 App Precompiled_Stub_InvokeDartCode + 252
+#198 0000000102c891a8 Flutter 0x1027f8000 + 4788648
+                              dart::DartEntry::InvokeCode(dart::Code const&, dart::Array const&, dart::Array const&, dart::Thread*)
+                              third_party/dart/runtime/vm/dart_entry.cc:190:10
+                              dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long)
+                              third_party/dart/runtime/vm/dart_entry.cc:168:0
+#199 0000000102c8f6a4 Flutter 0x1027f8000 + 4814500
+                              dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&)
+                              third_party/dart/runtime/vm/dart_entry.cc:36:10
+                              dart::DartLibraryCalls::HandleMessage(dart::Object const&, dart::Instance const&)
+                              third_party/dart/runtime/vm/dart_entry.cc:688:0
+                              dart::IsolateMessageHandler::HandleMessage(std::__1::unique_ptr<dart::Message, std::__1::default_delete<dart::Message> >)
+                              third_party/dart/runtime/vm/isolate.cc:1093:0
+#200 0000000102c9a824 Flutter 0x1027f8000 + 4859940
+                              dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)
+                              third_party/dart/runtime/vm/message_handler.cc:233:16
+#201 0000000102b1d2c4 Flutter 0x1027f8000 + 3297988
+                              dart::MessageHandler::HandleNextMessage()
+                              third_party/dart/runtime/vm/message_handler.cc:294:10
+                              Dart_HandleMessage
+                              third_party/dart/runtime/vm/dart_api_impl.cc:1959:0
+                              tonic::DartMessageHandler::OnHandleMessage(tonic::DartState*)
+                              flutter/third_party/tonic/dart_message_handler.cc:113:0
+                              tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0::operator()() const
+                              flutter/third_party/tonic/dart_message_handler.cc:42:0
+                              decltype(std::__1::forward<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&>(fp)()) std::__1::__invoke<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&>(tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&)
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:4361:0
+                              void std::__1::__invoke_void_return_wrapper<void>::__call<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&>(tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&)
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base:349:0
+                              std::__1::__function::__alloc_func<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0, std::__1::allocator<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0>, void ()>::operator()()
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1527:0
+                              std::__1::__function::__func<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0, std::__1::allocator<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0>, void ()>::operator()()
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1651:0
+#202 0000000102834ba0 Flutter 0x1027f8000 + 248736
+                              std::__1::__function::__value_func<void ()>::operator()() const
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1799:16
+                              std::__1::function<void ()>::operator()() const
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:2347:0
+                              fml::MessageLoopImpl::FlushTasks(fml::FlushType)
+                              flutter/fml/message_loop_impl.cc:127:0
+#203 0000000102836818 Flutter 0x1027f8000 + 256024
+                              fml::MessageLoopImpl::RunExpiredTasksNow()
+                              flutter/fml/message_loop_impl.cc:137:3
+                              fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)
+                              flutter/fml/platform/darwin/message_loop_darwin.mm:75:0
+#204 0000000185ec41c0 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28 (CFRunLoop.c:176)
+#205 0000000185ec3edc CoreFoundation __CFRunLoopDoTimer + 880 (CFRunLoop.c:235)
+#206 0000000185ec35b8 CoreFoundation __CFRunLoopDoTimers + 276 (CFRunLoop.c:251)
+#207 0000000185ebe5c8 CoreFoundation __CFRunLoopRun + 1640 (CFRunLoop.c:)
+#208 0000000185ebdc34 CoreFoundation CFRunLoopRunSpecific + 424 (CFRunLoop.c:319)
+#209 00000001028366f4 Flutter 0x1027f8000 + 255732
+                              fml::MessageLoopDarwin::Run()
+                              flutter/fml/platform/darwin/message_loop_darwin.mm:46:20
+#210 00000001028360c0 Flutter 0x1027f8000 + 254144
+                              fml::MessageLoopImpl::DoRun()
+                              flutter/fml/message_loop_impl.cc:96:3
+                              fml::MessageLoop::Run()
+                              flutter/fml/message_loop.cc:49:0
+                              fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const
+                              flutter/fml/thread.cc:34:0
+                              decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:4361:0
+                              void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:342:0
+                              void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)
+                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:352:0
+#211 0000000185c5bd98 libsystem_pthread.dylib _pthread_start + 156 (pthread.c:89)
+#212 0000000185c5f74c libsystem_pthread.dylib thread_start + 8
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test11.expected.txt b/github-label-notifier/symbolizer/test/data/test11.expected.txt
new file mode 100644
index 0000000..7a2b264
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test11.expected.txt
@@ -0,0 +1,1942 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "0",
+          "binary": "libsystem_kernel.dylib",
+          "pc": 6540209544,
+          "symbol": "__pthread_kill",
+          "offset": 8,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "1",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 6539260392,
+          "symbol": "pthread_kill$VARIANT$mp",
+          "offset": 136,
+          "location": "pthread.c:145",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "2",
+          "binary": "libsystem_c.dylib",
+          "pc": 6538552900,
+          "symbol": "abort",
+          "offset": 100,
+          "location": "abort.c:11",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "3",
+          "binary": "Flutter",
+          "pc": 4341400128,
+          "symbol": "0x1027f8000",
+          "offset": 4522560,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "4",
+          "binary": "Flutter",
+          "pc": 4342136480,
+          "symbol": "0x1027f8000",
+          "offset": 5258912,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "5",
+          "binary": "App",
+          "pc": 4381442572,
+          "symbol": "Precompiled_Stub_CallToRuntime",
+          "offset": 84,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "6",
+          "binary": "App",
+          "pc": 4381440864,
+          "symbol": "Precompiled_Stub_UnlinkedCall",
+          "offset": 44,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "7",
+          "binary": "App",
+          "pc": 4382883832,
+          "symbol": "Precompiled_AnimatedWidgetBaseState_initState_4854",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "8",
+          "binary": "App",
+          "pc": 4384030556,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 80,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "9",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "10",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "11",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "12",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "13",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "14",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "15",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "16",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "17",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "18",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "19",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "20",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "21",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "22",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "23",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "24",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "25",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "26",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "27",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "28",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "29",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "30",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "31",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "32",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "33",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "34",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "35",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "36",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "37",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "38",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "39",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "40",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "41",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "42",
+          "binary": "App",
+          "pc": 4383821844,
+          "symbol": "Precompiled_SingleChildRenderObjectElement_mount_7858",
+          "offset": 432,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "43",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "44",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "45",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "46",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "47",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "48",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "49",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "50",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "51",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "52",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "53",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "54",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "55",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "56",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "57",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "58",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "59",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "60",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "61",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "62",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "63",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "64",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "65",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "66",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "67",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "68",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "69",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "70",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "71",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "72",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "73",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "74",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "75",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "76",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "77",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "78",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "79",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "80",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "81",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "82",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "83",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "84",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "85",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "86",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "87",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "88",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "89",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "90",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "91",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "92",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "93",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "94",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "95",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "96",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "97",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "98",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "99",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "100",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "101",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "102",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "103",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "104",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "105",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "106",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "107",
+          "binary": "App",
+          "pc": 4383821844,
+          "symbol": "Precompiled_SingleChildRenderObjectElement_mount_7858",
+          "offset": 432,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "108",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "109",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "110",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "111",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "112",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "113",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "114",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "115",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "116",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "117",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "118",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "119",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "120",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "121",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "122",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "123",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "124",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "125",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "126",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "127",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "128",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "129",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "130",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "131",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "132",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "133",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "134",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "135",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "136",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "137",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "138",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "139",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "140",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "141",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "142",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "143",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "144",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "145",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "146",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "147",
+          "binary": "App",
+          "pc": 4383826280,
+          "symbol": "Precompiled_StatefulElement_performRebuild_7870",
+          "offset": 104,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "148",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "149",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "150",
+          "binary": "App",
+          "pc": 4384030632,
+          "symbol": "Precompiled_StatefulElement__firstBuild_396042623_8467",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "151",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "152",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "153",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "154",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "155",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "156",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "157",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "158",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "159",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "160",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "161",
+          "binary": "App",
+          "pc": 4383826380,
+          "symbol": "Precompiled___DefaultInheritedProviderScopeElement_InheritedElement__InheritedProviderScopeMixin_...",
+          "offset": 72,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "162",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "163",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "164",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "165",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "166",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "167",
+          "binary": "App",
+          "pc": 4383826940,
+          "symbol": "Precompiled_ComponentElement_performRebuild_7873",
+          "offset": 484,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "168",
+          "binary": "App",
+          "pc": 4381898824,
+          "symbol": "Precompiled_Element_rebuild_1634",
+          "offset": 96,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "169",
+          "binary": "App",
+          "pc": 4384030916,
+          "symbol": "Precompiled_ComponentElement__firstBuild_396042623_8469",
+          "offset": 32,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "170",
+          "binary": "App",
+          "pc": 4383822580,
+          "symbol": "Precompiled_ComponentElement_mount_7863",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "171",
+          "binary": "App",
+          "pc": 4383822448,
+          "symbol": "Precompiled__SingleChildStatelessElement_StatelessElement_SingleChildWidgetElementMixin_524485488...",
+          "offset": 60,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "172",
+          "binary": "App",
+          "pc": 4381789848,
+          "symbol": "Precompiled_Element_inflateWidget_1296",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "173",
+          "binary": "App",
+          "pc": 4383838224,
+          "symbol": "Precompiled_Element_updateChild_7906",
+          "offset": 508,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "174",
+          "binary": "App",
+          "pc": 4381982748,
+          "symbol": "Precompiled_RenderObjectToWidgetElement__rebuild_414399801_1965",
+          "offset": 84,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "175",
+          "binary": "App",
+          "pc": 4383821972,
+          "symbol": "Precompiled_RenderObjectToWidgetElement_mount_7859",
+          "offset": 60,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "176",
+          "binary": "App",
+          "pc": 4384785420,
+          "symbol": "Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree__anonymous_closure__10738",
+          "offset": 84,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "177",
+          "binary": "App",
+          "pc": 4381906452,
+          "symbol": "Precompiled_BuildOwner_buildScope_1653",
+          "offset": 256,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "178",
+          "binary": "App",
+          "pc": 4382003032,
+          "symbol": "Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree_2058",
+          "offset": 288,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "179",
+          "binary": "App",
+          "pc": 4381987792,
+          "symbol": "Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa...",
+          "offset": 168,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "180",
+          "binary": "App",
+          "pc": 4384785728,
+          "symbol": "Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa...",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "181",
+          "binary": "App",
+          "pc": 4381550924,
+          "symbol": "Precompiled_____rootRun_4048458_315",
+          "offset": 156,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "182",
+          "binary": "App",
+          "pc": 4381551600,
+          "symbol": "Precompiled_____rootRun_4048458__rootRun_4048458_316",
+          "offset": 504,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "183",
+          "binary": "App",
+          "pc": 4384094948,
+          "symbol": "Precompiled__CustomZone_4048458_run_8789",
+          "offset": 240,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "184",
+          "binary": "App",
+          "pc": 4384098384,
+          "symbol": "Precompiled__CustomZone_4048458_runGuarded_8808",
+          "offset": 52,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "185",
+          "binary": "App",
+          "pc": 4384643444,
+          "symbol": "Precompiled__CustomZone_4048458_bindCallbackGuarded__anonymous_closure__10427",
+          "offset": 76,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "186",
+          "binary": "App",
+          "pc": 4381551000,
+          "symbol": "Precompiled_____rootRun_4048458_315",
+          "offset": 232,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "187",
+          "binary": "App",
+          "pc": 4381551600,
+          "symbol": "Precompiled_____rootRun_4048458__rootRun_4048458_316",
+          "offset": 504,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "188",
+          "binary": "App",
+          "pc": 4384094948,
+          "symbol": "Precompiled__CustomZone_4048458_run_8789",
+          "offset": 240,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "189",
+          "binary": "App",
+          "pc": 4384643004,
+          "symbol": "Precompiled__CustomZone_4048458_bindCallback__anonymous_closure__10425",
+          "offset": 148,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "190",
+          "binary": "App",
+          "pc": 4384660384,
+          "symbol": "Precompiled_Timer__createTimer_4048458__anonymous_closure__10485",
+          "offset": 228,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "191",
+          "binary": "App",
+          "pc": 4384895252,
+          "symbol": "Precompiled__Closure_0150898_call_11047",
+          "offset": 72,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "192",
+          "binary": "App",
+          "pc": 4383706380,
+          "symbol": "Precompiled__Timer_1026248__runTimers_1026248_7429",
+          "offset": 720,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "193",
+          "binary": "App",
+          "pc": 4383705444,
+          "symbol": "Precompiled__Timer_1026248__handleMessage_1026248_7427",
+          "offset": 140,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "194",
+          "binary": "App",
+          "pc": 4383705628,
+          "symbol": "Precompiled__Timer_1026248__handleMessage_1026248__handleMessage_1026248_7428",
+          "offset": 112,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "195",
+          "binary": "App",
+          "pc": 4384895252,
+          "symbol": "Precompiled__Closure_0150898_call_11047",
+          "offset": 72,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "196",
+          "binary": "App",
+          "pc": 4381596680,
+          "symbol": "Precompiled__RawReceivePortImpl_1026248__handleMessage_1026248_473",
+          "offset": 52,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "197",
+          "binary": "App",
+          "pc": 4381441508,
+          "symbol": "Precompiled_Stub_InvokeDartCode",
+          "offset": 252,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "198",
+          "binary": "Flutter",
+          "pc": 4341666216,
+          "symbol": "0x1027f8000",
+          "offset": 4788648,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "199",
+          "binary": "Flutter",
+          "pc": 4341692068,
+          "symbol": "0x1027f8000",
+          "offset": 4814500,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "200",
+          "binary": "Flutter",
+          "pc": 4341737508,
+          "symbol": "0x1027f8000",
+          "offset": 4859940,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "201",
+          "binary": "Flutter",
+          "pc": 4340175556,
+          "symbol": "0x1027f8000",
+          "offset": 3297988,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "202",
+          "binary": "Flutter",
+          "pc": 4337126304,
+          "symbol": "0x1027f8000",
+          "offset": 248736,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "203",
+          "binary": "Flutter",
+          "pc": 4337133592,
+          "symbol": "0x1027f8000",
+          "offset": 256024,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "204",
+          "binary": "CoreFoundation",
+          "pc": 6541820352,
+          "symbol": "__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__",
+          "offset": 28,
+          "location": "CFRunLoop.c:176",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "205",
+          "binary": "CoreFoundation",
+          "pc": 6541819612,
+          "symbol": "__CFRunLoopDoTimer",
+          "offset": 880,
+          "location": "CFRunLoop.c:235",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "206",
+          "binary": "CoreFoundation",
+          "pc": 6541817272,
+          "symbol": "__CFRunLoopDoTimers",
+          "offset": 276,
+          "location": "CFRunLoop.c:251",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "207",
+          "binary": "CoreFoundation",
+          "pc": 6541796808,
+          "symbol": "__CFRunLoopRun",
+          "offset": 1640,
+          "location": "CFRunLoop.c:",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "208",
+          "binary": "CoreFoundation",
+          "pc": 6541794356,
+          "symbol": "CFRunLoopRunSpecific",
+          "offset": 424,
+          "location": "CFRunLoop.c:319",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "209",
+          "binary": "Flutter",
+          "pc": 4337133300,
+          "symbol": "0x1027f8000",
+          "offset": 255732,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "210",
+          "binary": "Flutter",
+          "pc": 4337131712,
+          "symbol": "0x1027f8000",
+          "offset": 254144,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "211",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 6539296152,
+          "symbol": "_pthread_start",
+          "offset": 156,
+          "location": "pthread.c:89",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "212",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 6539310924,
+          "symbol": "thread_start",
+          "offset": 8,
+          "location": "",
+          "runtimeType": "ios"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "c9506cb8e93e5e8879152ff5c948b175abb5b997",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 0000000185d3ad88 libsystem_kernel.dylib __pthread_kill + 8\n#01 0000000185c531e8 libsystem_pthread.dylib pthread_kill$VARIANT$mp + 136 (pthread.c:145)\n#02 0000000185ba6644 libsystem_c.dylib abort + 100 (abort.c:11)\n#03 0000000102c48240 Flutter 0x1027f8000 + 4522560\n                             dart::Assert::Fail(char const*, ...)\n                             third_party/dart/runtime/platform/assert.cc:44:3\n#04 0000000102cfbea0 Flutter 0x1027f8000 + 5258912\n                             dart::SaveUnlinkedCall(dart::Zone*, dart::Isolate*, unsigned long, dart::UnlinkedCall const&)\n                             third_party/dart/runtime/vm/runtime_entry.cc:1568:3\n                             dart::DRT_HelperUnlinkedCall(dart::Isolate*, dart::Thread*, dart::Zone*, dart::NativeArguments)\n                             third_party/dart/runtime/vm/runtime_entry.cc:1660:0\n                             dart::DRT_UnlinkedCall(dart::NativeArguments)\n                             third_party/dart/runtime/vm/runtime_entry.cc:1596:0\n#05 000000010527820c App Precompiled_Stub_CallToRuntime + 84\n#06 0000000105277b60 App Precompiled_Stub_UnlinkedCall + 44\n#07 00000001053d7ff8 App Precompiled_AnimatedWidgetBaseState_initState_4854 + 76\n#08 00000001054eff5c App Precompiled_StatefulElement__firstBuild_396042623_8467 + 80\n#09 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#10 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#11 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#12 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#13 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#14 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#15 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#16 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#17 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#18 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#19 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#20 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#21 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#22 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#23 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#24 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#25 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#26 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#27 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#28 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#29 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#30 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#31 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#32 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#33 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#34 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#35 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#36 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#37 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#38 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#39 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#40 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#41 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#42 00000001054bd014 App Precompiled_SingleChildRenderObjectElement_mount_7858 + 432\n#43 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#44 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#45 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#46 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#47 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#48 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#49 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#50 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#51 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#52 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#53 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#54 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#55 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#56 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#57 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#58 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#59 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#60 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#61 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#62 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#63 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#64 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#65 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#66 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#67 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#68 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#69 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#70 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#71 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#72 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#73 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#74 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#75 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#76 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#77 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#78 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#79 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#80 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#81 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#82 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#83 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#84 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#85 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#86 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#87 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#88 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#89 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#90 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#91 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#92 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#93 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#94 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#95 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#96 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#97 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#98 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#99 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#100 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#101 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#102 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#103 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#104 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#105 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#106 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#107 00000001054bd014 App Precompiled_SingleChildRenderObjectElement_mount_7858 + 432\n#108 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#109 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#110 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#111 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#112 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#113 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#114 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#115 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#116 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#117 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#118 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#119 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#120 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#121 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#122 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#123 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#124 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#125 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#126 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#127 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#128 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#129 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#130 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#131 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#132 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#133 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#134 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#135 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#136 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#137 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#138 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#139 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#140 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#141 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#142 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#143 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#144 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#145 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#146 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#147 00000001054be168 App Precompiled_StatefulElement_performRebuild_7870 + 104\n#148 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#149 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#150 00000001054effa8 App Precompiled_StatefulElement__firstBuild_396042623_8467 + 156\n#151 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#152 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#153 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#154 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#155 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#156 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#157 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#158 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#159 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#160 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#161 00000001054be1cc App Precompiled___DefaultInheritedProviderScopeElement_InheritedElement__InheritedProviderScopeMixin_... + 72\n#162 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#163 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#164 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#165 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#166 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#167 00000001054be3fc App Precompiled_ComponentElement_performRebuild_7873 + 484\n#168 00000001052e7848 App Precompiled_Element_rebuild_1634 + 96\n#169 00000001054f00c4 App Precompiled_ComponentElement__firstBuild_396042623_8469 + 32\n#170 00000001054bd2f4 App Precompiled_ComponentElement_mount_7863 + 76\n#171 00000001054bd270 App Precompiled__SingleChildStatelessElement_StatelessElement_SingleChildWidgetElementMixin_524485488... + 60\n#172 00000001052cce98 App Precompiled_Element_inflateWidget_1296 + 404\n#173 00000001054c1010 App Precompiled_Element_updateChild_7906 + 508\n#174 00000001052fc01c App Precompiled_RenderObjectToWidgetElement__rebuild_414399801_1965 + 84\n#175 00000001054bd094 App Precompiled_RenderObjectToWidgetElement_mount_7859 + 60\n#176 00000001055a840c App Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree__anonymous_closure__10738 + 84\n#177 00000001052e9614 App Precompiled_BuildOwner_buildScope_1653 + 256\n#178 0000000105300f58 App Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree_2058 + 288\n#179 00000001052fd3d0 App Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa... + 168\n#180 00000001055a8540 App Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa... + 76\n#181 000000010529294c App Precompiled_____rootRun_4048458_315 + 156\n#182 0000000105292bf0 App Precompiled_____rootRun_4048458__rootRun_4048458_316 + 504\n#183 00000001054ffae4 App Precompiled__CustomZone_4048458_run_8789 + 240\n#184 0000000105500850 App Precompiled__CustomZone_4048458_runGuarded_8808 + 52\n#185 0000000105585974 App Precompiled__CustomZone_4048458_bindCallbackGuarded__anonymous_closure__10427 + 76\n#186 0000000105292998 App Precompiled_____rootRun_4048458_315 + 232\n#187 0000000105292bf0 App Precompiled_____rootRun_4048458__rootRun_4048458_316 + 504\n#188 00000001054ffae4 App Precompiled__CustomZone_4048458_run_8789 + 240\n#189 00000001055857bc App Precompiled__CustomZone_4048458_bindCallback__anonymous_closure__10425 + 148\n#190 0000000105589ba0 App Precompiled_Timer__createTimer_4048458__anonymous_closure__10485 + 228\n#191 00000001055c3114 App Precompiled__Closure_0150898_call_11047 + 72\n#192 00000001054a0d0c App Precompiled__Timer_1026248__runTimers_1026248_7429 + 720\n#193 00000001054a0964 App Precompiled__Timer_1026248__handleMessage_1026248_7427 + 140\n#194 00000001054a0a1c App Precompiled__Timer_1026248__handleMessage_1026248__handleMessage_1026248_7428 + 112\n#195 00000001055c3114 App Precompiled__Closure_0150898_call_11047 + 72\n#196 000000010529dc08 App Precompiled__RawReceivePortImpl_1026248__handleMessage_1026248_473 + 52\n#197 0000000105277de4 App Precompiled_Stub_InvokeDartCode + 252\n#198 0000000102c891a8 Flutter 0x1027f8000 + 4788648\n                              dart::DartEntry::InvokeCode(dart::Code const&, dart::Array const&, dart::Array const&, dart::Thread*)\n                              third_party/dart/runtime/vm/dart_entry.cc:190:10\n                              dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&, unsigned long)\n                              third_party/dart/runtime/vm/dart_entry.cc:168:0\n#199 0000000102c8f6a4 Flutter 0x1027f8000 + 4814500\n                              dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&)\n                              third_party/dart/runtime/vm/dart_entry.cc:36:10\n                              dart::DartLibraryCalls::HandleMessage(dart::Object const&, dart::Instance const&)\n                              third_party/dart/runtime/vm/dart_entry.cc:688:0\n                              dart::IsolateMessageHandler::HandleMessage(std::__1::unique_ptr<dart::Message, std::__1::default_delete<dart::Message> >)\n                              third_party/dart/runtime/vm/isolate.cc:1093:0\n#200 0000000102c9a824 Flutter 0x1027f8000 + 4859940\n                              dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)\n                              third_party/dart/runtime/vm/message_handler.cc:233:16\n#201 0000000102b1d2c4 Flutter 0x1027f8000 + 3297988\n                              dart::MessageHandler::HandleNextMessage()\n                              third_party/dart/runtime/vm/message_handler.cc:294:10\n                              Dart_HandleMessage\n                              third_party/dart/runtime/vm/dart_api_impl.cc:1959:0\n                              tonic::DartMessageHandler::OnHandleMessage(tonic::DartState*)\n                              flutter/third_party/tonic/dart_message_handler.cc:113:0\n                              tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0::operator()() const\n                              flutter/third_party/tonic/dart_message_handler.cc:42:0\n                              decltype(std::__1::forward<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&>(fp)()) std::__1::__invoke<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&>(tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&)\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:4361:0\n                              void std::__1::__invoke_void_return_wrapper<void>::__call<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&>(tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0&)\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base:349:0\n                              std::__1::__function::__alloc_func<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0, std::__1::allocator<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0>, void ()>::operator()()\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1527:0\n                              std::__1::__function::__func<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0, std::__1::allocator<tonic::DartMessageHandler::OnMessage(tonic::DartState*)::$_0>, void ()>::operator()()\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1651:0\n#202 0000000102834ba0 Flutter 0x1027f8000 + 248736\n                              std::__1::__function::__value_func<void ()>::operator()() const\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1799:16\n                              std::__1::function<void ()>::operator()() const\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:2347:0\n                              fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                              flutter/fml/message_loop_impl.cc:127:0\n#203 0000000102836818 Flutter 0x1027f8000 + 256024\n                              fml::MessageLoopImpl::RunExpiredTasksNow()\n                              flutter/fml/message_loop_impl.cc:137:3\n                              fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)\n                              flutter/fml/platform/darwin/message_loop_darwin.mm:75:0\n#204 0000000185ec41c0 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28 (CFRunLoop.c:176)\n#205 0000000185ec3edc CoreFoundation __CFRunLoopDoTimer + 880 (CFRunLoop.c:235)\n#206 0000000185ec35b8 CoreFoundation __CFRunLoopDoTimers + 276 (CFRunLoop.c:251)\n#207 0000000185ebe5c8 CoreFoundation __CFRunLoopRun + 1640 (CFRunLoop.c:)\n#208 0000000185ebdc34 CoreFoundation CFRunLoopRunSpecific + 424 (CFRunLoop.c:319)\n#209 00000001028366f4 Flutter 0x1027f8000 + 255732\n                              fml::MessageLoopDarwin::Run()\n                              flutter/fml/platform/darwin/message_loop_darwin.mm:46:20\n#210 00000001028360c0 Flutter 0x1027f8000 + 254144\n                              fml::MessageLoopImpl::DoRun()\n                              flutter/fml/message_loop_impl.cc:96:3\n                              fml::MessageLoop::Run()\n                              flutter/fml/message_loop.cc:49:0\n                              fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const\n                              flutter/fml/thread.cc:34:0\n                              decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:4361:0\n                              void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:342:0\n                              void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)\n                              /b/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/thread:352:0\n#211 0000000185c5bd98 libsystem_pthread.dylib _pthread_start + 156 (pthread.c:89)\n#212 0000000185c5f74c libsystem_pthread.dylib thread_start + 8\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test11.input.txt b/github-label-notifier/symbolizer/test/data/test11.input.txt
new file mode 100644
index 0000000..426c0b0
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test11.input.txt
@@ -0,0 +1,234 @@
+```
+Incident Identifier: AEF1125A-C235-4216-89F7-E3131F9EFB84
+Code Type:           ARM-64 (Native)
+
+Thread 7:
+0   libsystem_pthread.dylib       	0x0000000185c5f738 start_wqthread + 0
+
+Thread 8 name:
+Thread 8 Crashed:
+0   libsystem_kernel.dylib        	0x0000000185d3ad88 __pthread_kill + 8
+1   libsystem_pthread.dylib       	0x0000000185c531e8 pthread_kill$VARIANT$mp + 136 (pthread.c:1458)
+2   libsystem_c.dylib             	0x0000000185ba6644 abort + 100 (abort.c:110)
+3   Flutter                       	0x0000000102c48240 0x1027f8000 + 4522560
+4   Flutter                       	0x0000000102cfbea0 0x1027f8000 + 5258912
+5   App                           	0x000000010527820c Precompiled_Stub_CallToRuntime + 84
+6   App                           	0x0000000105277b60 Precompiled_Stub_UnlinkedCall + 44
+7   App                           	0x00000001053d7ff8 Precompiled_AnimatedWidgetBaseState_initState_4854 + 76
+8   App                           	0x00000001054eff5c Precompiled_StatefulElement__firstBuild_396042623_8467 + 80
+9   App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+10  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+11  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+12  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+13  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+14  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+15  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+16  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+17  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+18  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+19  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+20  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+21  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+22  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+23  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+24  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+25  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+26  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+27  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+28  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+29  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+30  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+31  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+32  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+33  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+34  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+35  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+36  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+37  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+38  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+39  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+40  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+41  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+42  App                           	0x00000001054bd014 Precompiled_SingleChildRenderObjectElement_mount_7858 + 432
+43  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+44  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+45  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+46  App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+47  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+48  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+49  App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+50  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+51  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+52  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+53  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+54  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+55  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+56  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+57  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+58  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+59  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+60  App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+61  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+62  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+63  App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+64  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+65  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+66  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+67  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+68  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+69  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+70  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+71  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+72  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+73  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+74  App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+75  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+76  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+77  App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+78  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+79  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+80  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+81  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+82  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+83  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+84  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+85  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+86  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+87  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+88  App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+89  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+90  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+91  App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+92  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+93  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+94  App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+95  App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+96  App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+97  App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+98  App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+99  App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+100 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+101 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+102 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+103 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+104 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+105 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+106 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+107 App                           	0x00000001054bd014 Precompiled_SingleChildRenderObjectElement_mount_7858 + 432
+108 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+109 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+110 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+111 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+112 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+113 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+114 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+115 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+116 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+117 App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+118 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+119 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+120 App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+121 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+122 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+123 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+124 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+125 App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+126 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+127 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+128 App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+129 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+130 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+131 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+132 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+133 App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+134 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+135 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+136 App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+137 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+138 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+139 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+140 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+141 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+142 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+143 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+144 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+145 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+146 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+147 App                           	0x00000001054be168 Precompiled_StatefulElement_performRebuild_7870 + 104
+148 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+149 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+150 App                           	0x00000001054effa8 Precompiled_StatefulElement__firstBuild_396042623_8467 + 156
+151 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+152 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+153 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+154 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+155 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+156 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+157 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+158 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+159 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+160 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+161 App                           	0x00000001054be1cc Precompiled___DefaultInheritedProviderScopeElement_InheritedElement__InheritedProviderScopeMixin_... + 72
+162 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+163 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+164 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+165 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+166 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+167 App                           	0x00000001054be3fc Precompiled_ComponentElement_performRebuild_7873 + 484
+168 App                           	0x00000001052e7848 Precompiled_Element_rebuild_1634 + 96
+169 App                           	0x00000001054f00c4 Precompiled_ComponentElement__firstBuild_396042623_8469 + 32
+170 App                           	0x00000001054bd2f4 Precompiled_ComponentElement_mount_7863 + 76
+171 App                           	0x00000001054bd270 Precompiled__SingleChildStatelessElement_StatelessElement_SingleChildWidgetElementMixin_524485488... + 60
+172 App                           	0x00000001052cce98 Precompiled_Element_inflateWidget_1296 + 404
+173 App                           	0x00000001054c1010 Precompiled_Element_updateChild_7906 + 508
+174 App                           	0x00000001052fc01c Precompiled_RenderObjectToWidgetElement__rebuild_414399801_1965 + 84
+175 App                           	0x00000001054bd094 Precompiled_RenderObjectToWidgetElement_mount_7859 + 60
+176 App                           	0x00000001055a840c Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree__anonymous_closure__10738 + 84
+177 App                           	0x00000001052e9614 Precompiled_BuildOwner_buildScope_1653 + 256
+178 App                           	0x0000000105300f58 Precompiled_RenderObjectToWidgetAdapter_attachToRenderTree_2058 + 288
+179 App                           	0x00000001052fd3d0 Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa... + 168
+180 App                           	0x00000001055a8540 Precompiled__WidgetsFlutterBinding_BindingBase_GestureBinding_ServicesBinding_SchedulerBinding_Pa... + 76
+181 App                           	0x000000010529294c Precompiled_____rootRun_4048458_315 + 156
+182 App                           	0x0000000105292bf0 Precompiled_____rootRun_4048458__rootRun_4048458_316 + 504
+183 App                           	0x00000001054ffae4 Precompiled__CustomZone_4048458_run_8789 + 240
+184 App                           	0x0000000105500850 Precompiled__CustomZone_4048458_runGuarded_8808 + 52
+185 App                           	0x0000000105585974 Precompiled__CustomZone_4048458_bindCallbackGuarded__anonymous_closure__10427 + 76
+186 App                           	0x0000000105292998 Precompiled_____rootRun_4048458_315 + 232
+187 App                           	0x0000000105292bf0 Precompiled_____rootRun_4048458__rootRun_4048458_316 + 504
+188 App                           	0x00000001054ffae4 Precompiled__CustomZone_4048458_run_8789 + 240
+189 App                           	0x00000001055857bc Precompiled__CustomZone_4048458_bindCallback__anonymous_closure__10425 + 148
+190 App                           	0x0000000105589ba0 Precompiled_Timer__createTimer_4048458__anonymous_closure__10485 + 228
+191 App                           	0x00000001055c3114 Precompiled__Closure_0150898_call_11047 + 72
+192 App                           	0x00000001054a0d0c Precompiled__Timer_1026248__runTimers_1026248_7429 + 720
+193 App                           	0x00000001054a0964 Precompiled__Timer_1026248__handleMessage_1026248_7427 + 140
+194 App                           	0x00000001054a0a1c Precompiled__Timer_1026248__handleMessage_1026248__handleMessage_1026248_7428 + 112
+195 App                           	0x00000001055c3114 Precompiled__Closure_0150898_call_11047 + 72
+196 App                           	0x000000010529dc08 Precompiled__RawReceivePortImpl_1026248__handleMessage_1026248_473 + 52
+197 App                           	0x0000000105277de4 Precompiled_Stub_InvokeDartCode + 252
+198 Flutter                       	0x0000000102c891a8 0x1027f8000 + 4788648
+199 Flutter                       	0x0000000102c8f6a4 0x1027f8000 + 4814500
+200 Flutter                       	0x0000000102c9a824 0x1027f8000 + 4859940
+201 Flutter                       	0x0000000102b1d2c4 0x1027f8000 + 3297988
+202 Flutter                       	0x0000000102834ba0 0x1027f8000 + 248736
+203 Flutter                       	0x0000000102836818 0x1027f8000 + 256024
+204 CoreFoundation                	0x0000000185ec41c0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28 (CFRunLoop.c:1766)
+205 CoreFoundation                	0x0000000185ec3edc __CFRunLoopDoTimer + 880 (CFRunLoop.c:2357)
+206 CoreFoundation                	0x0000000185ec35b8 __CFRunLoopDoTimers + 276 (CFRunLoop.c:2512)
+207 CoreFoundation                	0x0000000185ebe5c8 __CFRunLoopRun + 1640 (CFRunLoop.c:0)
+208 CoreFoundation                	0x0000000185ebdc34 CFRunLoopRunSpecific + 424 (CFRunLoop.c:3192)
+209 Flutter                       	0x00000001028366f4 0x1027f8000 + 255732
+210 Flutter                       	0x00000001028360c0 0x1027f8000 + 254144
+211 libsystem_pthread.dylib       	0x0000000185c5bd98 _pthread_start + 156 (pthread.c:896)
+212 libsystem_pthread.dylib       	0x0000000185c5f74c thread_start + 8
+
+Binary Images:
+0x105270000 - 0x10584bfff App arm64  <f9e361ff2c6930499d85ae47d9dbfd3b> /var/containers/Bundle/Application/E5512921-87CB-437A-8E27-5C3037AEED7C/Runner.app/Frameworks/App.framework/App
+```
+
+```
+[✓] Flutter (Channel beta, v1.17.0, on ..., locale en-US)
+    • Flutter version 1.17.0 at ...
+    • Framework revision d3ed9ec945 (10 days ago), 2020-04-06 14:07:34 -0700
+    • Engine revision c9506cb8e9
+    • Dart version 2.8.0 (build 2.8.0-dev.18.0 eea9717938)
+```
diff --git a/github-label-notifier/symbolizer/test/data/test12.expected.github.txt b/github-label-notifier/symbolizer/test/data/test12.expected.github.txt
new file mode 100644
index 0000000..71a9c73
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test12.expected.github.txt
@@ -0,0 +1,118 @@
+crash from null symbolized using symbols for `b8752bbfff0419c8bf616b602bc59fd28f6a3d1b` `ios-arm64-release`
+```
+#00 00000001cb298b8c IOGPU -[IOGPUMetalCommandBuffer commandBufferResourceInfo] + 12
+#01 00000001d812f4e0 AGXMetalA9 (Missing)
+#02 00000001d80ae408 AGXMetalA9 (Missing)
+#03 00000001d80baff0 AGXMetalA9 (Missing)
+#04 0000000106013134 Flutter Flutter + 2781492
+                             GrMtlCommandBuffer::getBlitCommandEncoder()
+                             third_party/skia/src/gpu/mtl/GrMtlCommandBuffer.mm:45:37
+#05 00000001060161e4 Flutter Flutter + 2793956
+                             GrMtlGpu::uploadToTexture(GrMtlTexture*, int, int, int, int, GrColorType, GrMipLevel const*, int)
+                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:364:71
+                             GrMtlGpu::onWritePixels(GrSurface*, int, int, int, int, GrColorType, GrColorType, GrMipLevel const*, int, bool)
+                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:1205:0
+#06 0000000105f27e84 Flutter Flutter + 1818244
+                             GrGpu::writePixels(GrSurface*, int, int, int, int, GrColorType, GrColorType, GrMipLevel const*, int, bool)
+                             third_party/skia/src/gpu/GrGpu.cpp:465:15
+#07 0000000105f27ae4 Flutter Flutter + 1817316
+                             GrGpu::createTexture(SkISize, GrBackendFormat const&, GrRenderable, int, SkBudgeted, GrProtected, GrColorType, GrColorType, GrMipLevel const*, int)
+                             third_party/skia/src/gpu/GrGpu.cpp:205:24
+#08 0000000105f45a64 Flutter Flutter + 1940068
+                             GrResourceProvider::createTexture(SkISize, GrBackendFormat const&, GrColorType, GrRenderable, int, SkBudgeted, GrProtected, GrMipLevel const*, int)
+                             third_party/skia/src/gpu/GrResourceProvider.cpp:86:18
+#09 0000000105f336f4 Flutter Flutter + 1865460
+                             GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1::operator()(GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&) const
+                             third_party/skia/src/gpu/GrProxyProvider.cpp:376:61
+                             decltype(std::__1::forward<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&>(fp)(std::__1::forward<GrResourceProvider*>(fp0), std::__1::forward<GrSurfaceProxy::LazySurfaceDesc const&>(fp0))) std::__1::__invoke<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&>(GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             GrSurfaceProxy::LazyCallbackResult std::__1::__invoke_void_return_wrapper<GrSurfaceProxy::LazyCallbackResult>::__call<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&>(GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:318:0
+                             std::__1::__function::__alloc_func<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1, std::__1::allocator<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1>, GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0
+                             std::__1::__function::__func<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1, std::__1::allocator<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1>, GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0
+#10 0000000105f510d4 Flutter Flutter + 1986772
+                             std::__1::__function::__value_func<GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&) const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&) const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             GrSurfaceProxyPriv::doLazyInstantiation(GrResourceProvider*)
+                             third_party/skia/src/gpu/GrSurfaceProxy.cpp:375:0
+#11 0000000105f332d0 Flutter Flutter + 1864400
+                             GrProxyProvider::createProxyFromBitmap(SkBitmap const&, GrMipmapped, SkBackingFit, SkBudgeted)
+                             third_party/skia/src/gpu/GrProxyProvider.cpp:305:28
+#12 0000000105f104d4 Flutter Flutter + 1721556
+                             GrBitmapTextureMaker::refOriginalTextureProxyView(GrMipmapped)
+                             third_party/skia/src/gpu/GrBitmapTextureMaker.cpp:90:36
+#13 0000000105fc8ac4 Flutter Flutter + 2476740
+                             SkImage::MakeCrossContextFromPixmap(GrDirectContext*, SkPixmap const&, bool, bool)
+                             third_party/skia/src/image/SkImage_Gpu.cpp:637:29
+#14 000000010610f670 Flutter Flutter + 3815024
+                             flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3::operator()() const
+                             flutter/lib/ui/painting/image_decoder.cc:199:44
+                             decltype(std::__1::forward<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&>(fp)()) std::__1::__invoke<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&>(flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&>(flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0
+                             std::__1::__function::__alloc_func<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3, std::__1::allocator<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3>, void ()>::operator()()
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0
+                             std::__1::__function::__func<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3, std::__1::allocator<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3>, void ()>::operator()()
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0
+#15 0000000105da8768 Flutter Flutter + 247656
+                             fml::SyncSwitch::Execute(fml::SyncSwitch::Handlers const&)
+                             flutter/fml/synchronization/sync_switch.cc:0:0
+#16 000000010610ef50 Flutter Flutter + 3813200
+                             flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)
+                             flutter/lib/ui/painting/image_decoder.cc:184:45
+                             flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()::operator()()
+                             flutter/lib/ui/painting/image_decoder.cc:295:0
+                             auto fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>::operator()<>() const
+                             flutter/fml/make_copyable.h:24:0
+                             decltype(std::__1::forward<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&>(fp)()) std::__1::__invoke<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&>(fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__invoke_void_return_wrapper<void>::__call<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&>(fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0
+                             std::__1::__function::__alloc_func<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>, std::__1::allocator<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()> >, void ()>::operator()()
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0
+                             std::__1::__function::__func<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>, std::__1::allocator<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()> >, void ()>::operator()()
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0
+#17 0000000105da744c Flutter Flutter + 242764
+                             std::__1::__function::__value_func<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)
+                             flutter/fml/message_loop_impl.cc:130:0
+#18 0000000105da93c0 Flutter Flutter + 250816
+                             fml::MessageLoopImpl::RunExpiredTasksNow()
+                             flutter/fml/message_loop_impl.cc:143:3
+                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0
+#19 00000001922a4a30 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
+#20 00000001922a4634 CoreFoundation __CFRunLoopDoTimer + 1004
+#21 00000001922a3b14 CoreFoundation __CFRunLoopDoTimers + 324
+#22 000000019229deb0 CoreFoundation __CFRunLoopRun + 1912
+#23 000000019229d200 CoreFoundation CFRunLoopRunSpecific + 572
+#24 0000000105da929c Flutter Flutter + 250524
+                             fml::MessageLoopDarwin::Run()
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:46:20
+#25 0000000105da8c24 Flutter Flutter + 248868
+                             fml::MessageLoopImpl::DoRun()
+                             flutter/fml/message_loop_impl.cc:96:3
+                             fml::MessageLoop::Run()
+                             flutter/fml/message_loop.cc:49:0
+                             fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const
+                             flutter/fml/thread.cc:36:0
+                             decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:342:0
+                             void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:352:0
+#26 00000001d7bcab70 libsystem_pthread.dylib _pthread_start + 288
+#27 00000001d7bcf880 libsystem_pthread.dylib thread_start + 8
+
+```
+_(Load address missing from the report, detected heuristically: 0000000105d6c000)_
+<!-- {"symbolized":[1001]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test12.expected.txt b/github-label-notifier/symbolizer/test/data/test12.expected.txt
new file mode 100644
index 0000000..e3f7975
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test12.expected.txt
@@ -0,0 +1,282 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "0",
+          "binary": "IOGPU",
+          "pc": 7703464844,
+          "symbol": "-[IOGPUMetalCommandBuffer commandBufferResourceInfo]",
+          "offset": 12,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "1",
+          "binary": "AGXMetalA9",
+          "pc": 7920088288,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "2",
+          "binary": "AGXMetalA9",
+          "pc": 7919559688,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "3",
+          "binary": "AGXMetalA9",
+          "pc": 7919611888,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "4",
+          "binary": "Flutter",
+          "pc": 4395708724,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "5",
+          "binary": "Flutter",
+          "pc": 4395721188,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "6",
+          "binary": "Flutter",
+          "pc": 4394745476,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "7",
+          "binary": "Flutter",
+          "pc": 4394744548,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "8",
+          "binary": "Flutter",
+          "pc": 4394867300,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "9",
+          "binary": "Flutter",
+          "pc": 4394792692,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "10",
+          "binary": "Flutter",
+          "pc": 4394914004,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "11",
+          "binary": "Flutter",
+          "pc": 4394791632,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "12",
+          "binary": "Flutter",
+          "pc": 4394648788,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "13",
+          "binary": "Flutter",
+          "pc": 4395403972,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "14",
+          "binary": "Flutter",
+          "pc": 4396742256,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "15",
+          "binary": "Flutter",
+          "pc": 4393174888,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "16",
+          "binary": "Flutter",
+          "pc": 4396740432,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "17",
+          "binary": "Flutter",
+          "pc": 4393169996,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "18",
+          "binary": "Flutter",
+          "pc": 4393178048,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "19",
+          "binary": "CoreFoundation",
+          "pc": 6747212336,
+          "symbol": "__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__",
+          "offset": 28,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "20",
+          "binary": "CoreFoundation",
+          "pc": 6747211316,
+          "symbol": "__CFRunLoopDoTimer",
+          "offset": 1004,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "21",
+          "binary": "CoreFoundation",
+          "pc": 6747208468,
+          "symbol": "__CFRunLoopDoTimers",
+          "offset": 324,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "22",
+          "binary": "CoreFoundation",
+          "pc": 6747184816,
+          "symbol": "__CFRunLoopRun",
+          "offset": 1912,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "23",
+          "binary": "CoreFoundation",
+          "pc": 6747181568,
+          "symbol": "CFRunLoopRunSpecific",
+          "offset": 572,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "24",
+          "binary": "Flutter",
+          "pc": 4393177756,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "25",
+          "binary": "Flutter",
+          "pc": 4393176100,
+          "symbol": "(Missing)",
+          "offset": null,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "26",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7914433392,
+          "symbol": "_pthread_start",
+          "offset": 288,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "27",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 7914453120,
+          "symbol": "thread_start",
+          "offset": 8,
+          "location": "",
+          "runtimeType": "ios"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "b8752bbfff0419c8bf616b602bc59fd28f6a3d1b",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 00000001cb298b8c IOGPU -[IOGPUMetalCommandBuffer commandBufferResourceInfo] + 12\n#01 00000001d812f4e0 AGXMetalA9 (Missing)\n#02 00000001d80ae408 AGXMetalA9 (Missing)\n#03 00000001d80baff0 AGXMetalA9 (Missing)\n#04 0000000106013134 Flutter Flutter + 2781492\n                             GrMtlCommandBuffer::getBlitCommandEncoder()\n                             third_party/skia/src/gpu/mtl/GrMtlCommandBuffer.mm:45:37\n#05 00000001060161e4 Flutter Flutter + 2793956\n                             GrMtlGpu::uploadToTexture(GrMtlTexture*, int, int, int, int, GrColorType, GrMipLevel const*, int)\n                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:364:71\n                             GrMtlGpu::onWritePixels(GrSurface*, int, int, int, int, GrColorType, GrColorType, GrMipLevel const*, int, bool)\n                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:1205:0\n#06 0000000105f27e84 Flutter Flutter + 1818244\n                             GrGpu::writePixels(GrSurface*, int, int, int, int, GrColorType, GrColorType, GrMipLevel const*, int, bool)\n                             third_party/skia/src/gpu/GrGpu.cpp:465:15\n#07 0000000105f27ae4 Flutter Flutter + 1817316\n                             GrGpu::createTexture(SkISize, GrBackendFormat const&, GrRenderable, int, SkBudgeted, GrProtected, GrColorType, GrColorType, GrMipLevel const*, int)\n                             third_party/skia/src/gpu/GrGpu.cpp:205:24\n#08 0000000105f45a64 Flutter Flutter + 1940068\n                             GrResourceProvider::createTexture(SkISize, GrBackendFormat const&, GrColorType, GrRenderable, int, SkBudgeted, GrProtected, GrMipLevel const*, int)\n                             third_party/skia/src/gpu/GrResourceProvider.cpp:86:18\n#09 0000000105f336f4 Flutter Flutter + 1865460\n                             GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1::operator()(GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&) const\n                             third_party/skia/src/gpu/GrProxyProvider.cpp:376:61\n                             decltype(std::__1::forward<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&>(fp)(std::__1::forward<GrResourceProvider*>(fp0), std::__1::forward<GrSurfaceProxy::LazySurfaceDesc const&>(fp0))) std::__1::__invoke<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&>(GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             GrSurfaceProxy::LazyCallbackResult std::__1::__invoke_void_return_wrapper<GrSurfaceProxy::LazyCallbackResult>::__call<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&>(GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1&, GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:318:0\n                             std::__1::__function::__alloc_func<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1, std::__1::allocator<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1>, GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1, std::__1::allocator<GrProxyProvider::createMippedProxyFromBitmap(SkBitmap const&, SkBudgeted)::$_1>, GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#10 0000000105f510d4 Flutter Flutter + 1986772\n                             std::__1::__function::__value_func<GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*&&, GrSurfaceProxy::LazySurfaceDesc const&) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<GrSurfaceProxy::LazyCallbackResult (GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&)>::operator()(GrResourceProvider*, GrSurfaceProxy::LazySurfaceDesc const&) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             GrSurfaceProxyPriv::doLazyInstantiation(GrResourceProvider*)\n                             third_party/skia/src/gpu/GrSurfaceProxy.cpp:375:0\n#11 0000000105f332d0 Flutter Flutter + 1864400\n                             GrProxyProvider::createProxyFromBitmap(SkBitmap const&, GrMipmapped, SkBackingFit, SkBudgeted)\n                             third_party/skia/src/gpu/GrProxyProvider.cpp:305:28\n#12 0000000105f104d4 Flutter Flutter + 1721556\n                             GrBitmapTextureMaker::refOriginalTextureProxyView(GrMipmapped)\n                             third_party/skia/src/gpu/GrBitmapTextureMaker.cpp:90:36\n#13 0000000105fc8ac4 Flutter Flutter + 2476740\n                             SkImage::MakeCrossContextFromPixmap(GrDirectContext*, SkPixmap const&, bool, bool)\n                             third_party/skia/src/image/SkImage_Gpu.cpp:637:29\n#14 000000010610f670 Flutter Flutter + 3815024\n                             flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3::operator()() const\n                             flutter/lib/ui/painting/image_decoder.cc:199:44\n                             decltype(std::__1::forward<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&>(fp)()) std::__1::__invoke<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&>(flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&>(flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0\n                             std::__1::__function::__alloc_func<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3, std::__1::allocator<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3>, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3, std::__1::allocator<flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)::$_3>, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#15 0000000105da8768 Flutter Flutter + 247656\n                             fml::SyncSwitch::Execute(fml::SyncSwitch::Handlers const&)\n                             flutter/fml/synchronization/sync_switch.cc:0:0\n#16 000000010610ef50 Flutter Flutter + 3813200\n                             flutter::UploadRasterImage(sk_sp<SkImage>, fml::WeakPtr<flutter::IOManager>, fml::tracing::TraceFlow const&)\n                             flutter/lib/ui/painting/image_decoder.cc:184:45\n                             flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()::operator()()\n                             flutter/lib/ui/painting/image_decoder.cc:295:0\n                             auto fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>::operator()<>() const\n                             flutter/fml/make_copyable.h:24:0\n                             decltype(std::__1::forward<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&>(fp)()) std::__1::__invoke<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&>(fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__invoke_void_return_wrapper<void>::__call<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&>(fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0\n                             std::__1::__function::__alloc_func<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>, std::__1::allocator<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()> >, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()>, std::__1::allocator<fml::internal::CopyableLambda<flutter::ImageDecoder::Decode(fml::RefPtr<flutter::ImageDescriptor>, unsigned int, unsigned int, std::__1::function<void (flutter::SkiaGPUObject<SkImage>)> const&)::$_1::operator()()::'lambda'()> >, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#17 0000000105da744c Flutter Flutter + 242764\n                             std::__1::__function::__value_func<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                             flutter/fml/message_loop_impl.cc:130:0\n#18 0000000105da93c0 Flutter Flutter + 250816\n                             fml::MessageLoopImpl::RunExpiredTasksNow()\n                             flutter/fml/message_loop_impl.cc:143:3\n                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0\n#19 00000001922a4a30 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28\n#20 00000001922a4634 CoreFoundation __CFRunLoopDoTimer + 1004\n#21 00000001922a3b14 CoreFoundation __CFRunLoopDoTimers + 324\n#22 000000019229deb0 CoreFoundation __CFRunLoopRun + 1912\n#23 000000019229d200 CoreFoundation CFRunLoopRunSpecific + 572\n#24 0000000105da929c Flutter Flutter + 250524\n                             fml::MessageLoopDarwin::Run()\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:46:20\n#25 0000000105da8c24 Flutter Flutter + 248868\n                             fml::MessageLoopImpl::DoRun()\n                             flutter/fml/message_loop_impl.cc:96:3\n                             fml::MessageLoop::Run()\n                             flutter/fml/message_loop.cc:49:0\n                             fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const\n                             flutter/fml/thread.cc:36:0\n                             decltype(std::__1::forward<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fp)()) std::__1::__invoke<fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0>&, std::__1::__tuple_indices<>)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:342:0\n                             void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, fml::Thread::Thread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0> >(void*)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:352:0\n#26 00000001d7bcab70 libsystem_pthread.dylib _pthread_start + 288\n#27 00000001d7bcf880 libsystem_pthread.dylib thread_start + 8\n",
+    "notes": [
+      {
+        "kind": "loadBaseDetected",
+        "message": "0000000105d6c000"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test12.input.txt b/github-label-notifier/symbolizer/test/data/test12.input.txt
new file mode 100644
index 0000000..c6e5836
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test12.input.txt
@@ -0,0 +1,31 @@
+@flutter-symbolizer-bot this force ios flutter#v1.22.2 arm64
+
+Crashed: io.flutter.1.io
+0  IOGPU                          0x1cb298b8c -[IOGPUMetalCommandBuffer commandBufferResourceInfo] + 12
+1  AGXMetalA9                     0x1d812f4e0 (Missing)
+2  AGXMetalA9                     0x1d80ae408 (Missing)
+3  AGXMetalA9                     0x1d80baff0 (Missing)
+4  Flutter                        0x106013134 (Missing)
+5  Flutter                        0x1060161e4 (Missing)
+6  Flutter                        0x105f27e84 (Missing)
+7  Flutter                        0x105f27ae4 (Missing)
+8  Flutter                        0x105f45a64 (Missing)
+9  Flutter                        0x105f336f4 (Missing)
+10 Flutter                        0x105f510d4 (Missing)
+11 Flutter                        0x105f332d0 (Missing)
+12 Flutter                        0x105f104d4 (Missing)
+13 Flutter                        0x105fc8ac4 (Missing)
+14 Flutter                        0x10610f670 (Missing)
+15 Flutter                        0x105da8768 (Missing)
+16 Flutter                        0x10610ef50 (Missing)
+17 Flutter                        0x105da744c (Missing)
+18 Flutter                        0x105da93c0 (Missing)
+19 CoreFoundation                 0x1922a4a30 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
+20 CoreFoundation                 0x1922a4634 __CFRunLoopDoTimer + 1004
+21 CoreFoundation                 0x1922a3b14 __CFRunLoopDoTimers + 324
+22 CoreFoundation                 0x19229deb0 __CFRunLoopRun + 1912
+23 CoreFoundation                 0x19229d200 CFRunLoopRunSpecific + 572
+24 Flutter                        0x105da929c (Missing)
+25 Flutter                        0x105da8c24 (Missing)
+26 libsystem_pthread.dylib        0x1d7bcab70 _pthread_start + 288
+27 libsystem_pthread.dylib        0x1d7bcf880 thread_start + 8
diff --git a/github-label-notifier/symbolizer/test/data/test13.expected.github.txt b/github-label-notifier/symbolizer/test/data/test13.expected.github.txt
new file mode 100644
index 0000000..99beb3c
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test13.expected.github.txt
@@ -0,0 +1,138 @@
+crash from null symbolized using symbols for `2eac514f26a676d1df0821e815d501149d3ead7f` `ios-arm64-release`
+```
+#00 0000000182e17a74 Metal Metal + 68212
+#01 00000001a0963190 AGXMetalA8 AGXMetalA8 + 520592
+#02 00000001a095c3f4 AGXMetalA8 AGXMetalA8 + 492532
+#03 00000001a093ea58 AGXMetalA8 AGXMetalA8 + 371288
+#04 0000000105340708 Flutter Flutter + 2836232
+                             GrMtlCommandBuffer::getRenderCommandEncoder(MTLRenderPassDescriptor*, GrMtlPipelineState const*, GrMtlOpsRenderPass*)
+                             third_party/skia/src/gpu/mtl/GrMtlCommandBuffer.mm:89:35
+#05 0000000105347e48 Flutter Flutter + 2866760
+                             GrMtlOpsRenderPass::precreateCmdEncoder()
+                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:37:36
+#06 0000000105348458 Flutter Flutter + 2868312
+                             GrMtlOpsRenderPass::setupRenderPass(GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)
+                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:238:15
+                             GrMtlOpsRenderPass::GrMtlOpsRenderPass(GrMtlGpu*, GrRenderTarget*, GrSurfaceOrigin, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)
+                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:27:0
+                             GrMtlOpsRenderPass::GrMtlOpsRenderPass(GrMtlGpu*, GrRenderTarget*, GrSurfaceOrigin, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)
+                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:26:0
+#07 0000000105340fa4 Flutter Flutter + 2838436
+                             GrMtlGpu::getOpsRenderPass(GrRenderTarget*, GrStencilAttachment*, GrSurfaceOrigin, SkIRect const&, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&, SkTArray<GrSurfaceProxy*, true> const&, GrXferBarrierFlags)
+                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:192:16
+#08 000000010525944c Flutter Flutter + 1889356
+                             create_render_pass(GrGpu*, GrRenderTarget*, GrStencilAttachment*, GrSurfaceOrigin, SkIRect const&, GrLoadOp, SkRGBA4f<(SkAlphaType)2> const&, GrLoadOp, GrStoreOp, SkTArray<GrSurfaceProxy*, true> const&, GrXferBarrierFlags)
+                             third_party/skia/src/gpu/GrOpsTask.cpp:509:17
+                             GrOpsTask::onExecute(GrOpFlushState*)
+                             third_party/skia/src/gpu/GrOpsTask.cpp:593:0
+#09 000000010524cad8 Flutter Flutter + 1837784
+                             GrRenderTask::execute(GrOpFlushState*)
+                             third_party/skia/src/gpu/GrRenderTask.h:38:61
+                             GrDrawingManager::executeRenderTasks(int, int, GrOpFlushState*, int*)
+                             third_party/skia/src/gpu/GrDrawingManager.cpp:456:0
+                             GrDrawingManager::flush(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)
+                             third_party/skia/src/gpu/GrDrawingManager.cpp:335:0
+#10 000000010524cdf8 Flutter Flutter + 1838584
+                             GrDrawingManager::flushSurfaces(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)
+                             third_party/skia/src/gpu/GrDrawingManager.cpp:562:27
+#11 00000001052787c8 Flutter Flutter + 2017224
+                             GrDrawingManager::flushSurface(GrSurfaceProxy*, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)
+                             third_party/skia/src/gpu/GrDrawingManager.h:109:22
+                             GrSurfaceContext::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)
+                             third_party/skia/src/gpu/GrSurfaceContext.cpp:1232:0
+#12 00000001052ef5a4 Flutter Flutter + 2504100
+                             SkGpuDevice::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)
+                             third_party/skia/src/gpu/SkGpuDevice.cpp:1054:34
+                             SkGpuDevice::flush()
+                             third_party/skia/src/gpu/SkGpuDevice.cpp:1045:0
+#13 000000010550b5cc Flutter Flutter + 4715980
+                             SkCanvas::flush()
+                             third_party/skia/src/core/SkCanvas.cpp:614:11
+                             flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0::operator()(flutter::SurfaceFrame const&, SkCanvas*) const
+                             flutter/shell/gpu/gpu_surface_metal.mm:89:0
+                             decltype(std::__1::forward<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&>(fp)(std::__1::forward<flutter::SurfaceFrame const&>(fp0), std::__1::forward<SkCanvas*>(fp0))) std::__1::__invoke<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*>(flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             bool std::__1::__invoke_void_return_wrapper<bool>::__call<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*>(flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:318:0
+                             std::__1::__function::__alloc_func<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0, std::__1::allocator<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0>, bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0
+                             std::__1::__function::__func<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0, std::__1::allocator<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0>, bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0
+#14 000000010511b60c Flutter Flutter + 587276
+                             std::__1::__function::__value_func<bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&) const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*) const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             flutter::SurfaceFrame::PerformSubmit()
+                             flutter/flow/surface_frame.cc:65:0
+                             flutter::SurfaceFrame::Submit()
+                             flutter/flow/surface_frame.cc:43:0
+#15 00000001050a5268 Flutter Flutter + 103016
+                             flutter::FlutterPlatformViewsController::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::IOSContext>, sk_sp<SkPicture>, SkRect, long long, long long)
+                             flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:634:41
+                             flutter::FlutterPlatformViewsController::SubmitFrame(GrDirectContext*, std::__1::shared_ptr<flutter::IOSContext>, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)
+                             flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:533:0
+#16 00000001050bee8c Flutter Flutter + 208524
+                             flutter::IOSSurface::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)
+                             flutter/shell/platform/darwin/ios/ios_surface.mm:121:31
+#17 000000010539e840 Flutter Flutter + 3221568
+                             flutter::Rasterizer::DrawToSurface(flutter::LayerTree&)
+                             flutter/shell/common/rasterizer.cc:474:31
+#18 000000010539f400 Flutter Flutter + 3224576
+                             flutter::Rasterizer::DoDraw(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)
+                             flutter/shell/common/rasterizer.cc:339:32
+                             flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const
+                             flutter/shell/common/rasterizer.cc:173:0
+                             decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&>(fp)(std::__1::forward<std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(fp0))) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0
+                             std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0
+                             std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0
+#19 000000010539eb10 Flutter Flutter + 3222288
+                             std::__1::__function::__value_func<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&) const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             flutter::Pipeline<flutter::LayerTree>::Consume(std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)> const&)
+                             flutter/shell/common/pipeline.h:161:0
+                             flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)
+                             flutter/shell/common/rasterizer.cc:177:0
+#20 00000001053a5208 Flutter Flutter + 3248648
+                             flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31::operator()() const
+                             flutter/shell/common/shell.cc:1046:23
+                             decltype(std::__1::forward<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(fp)()) std::__1::__invoke<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0
+                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&)
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0
+                             std::__1::__function::__alloc_func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31>, void ()>::operator()()
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0
+                             std::__1::__function::__func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31>, void ()>::operator()()
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0
+#21 00000001050c9c7c Flutter Flutter + 253052
+                             std::__1::__function::__value_func<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16
+                             std::__1::function<void ()>::operator()() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0
+                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)
+                             flutter/fml/message_loop_impl.cc:130:0
+#22 00000001050cbbf0 Flutter Flutter + 261104
+                             fml::MessageLoopImpl::RunExpiredTasksNow()
+                             flutter/fml/message_loop_impl.cc:143:3
+                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)
+                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0
+#23 00000001810e3dbc CoreFoundation CoreFoundation + 966076
+#24 00000001810e3ae0 CoreFoundation CoreFoundation + 965344
+#25 00000001810e32e0 CoreFoundation CoreFoundation + 963296
+#26 00000001810e0ec8 CoreFoundation CoreFoundation + 954056
+#27 0000000181000c54 CoreFoundation CoreFoundation + 35924
+#28 0000000182eacf80 GraphicsServices GraphicsServices + 44928
+#29 000000018a7595c0 UIKit UIKit + 472512
+#30 00000001003cb6b4 ios_prod_global main -main.m:35
+#31 0000000180b20568 libdyld.dylib libdyld.dylib + 5480
+
+```
+_(Load address missing from the report, detected heuristically: 000000010508c000)_
+<!-- {"symbolized":[1001]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test13.expected.txt b/github-label-notifier/symbolizer/test/data/test13.expected.txt
new file mode 100644
index 0000000..8e98a60
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test13.expected.txt
@@ -0,0 +1,318 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 6490782324,
+          "binary": "Metal",
+          "offset": 68212,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "01",
+          "pc": 6989164944,
+          "binary": "AGXMetalA8",
+          "offset": 520592,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "02",
+          "pc": 6989136884,
+          "binary": "AGXMetalA8",
+          "offset": 492532,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "03",
+          "pc": 6989015640,
+          "binary": "AGXMetalA8",
+          "offset": 371288,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "04",
+          "pc": 4382263048,
+          "binary": "Flutter",
+          "offset": 2836232,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "05",
+          "pc": 4382293576,
+          "binary": "Flutter",
+          "offset": 2866760,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "06",
+          "pc": 4382295128,
+          "binary": "Flutter",
+          "offset": 2868312,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "07",
+          "pc": 4382265252,
+          "binary": "Flutter",
+          "offset": 2838436,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "08",
+          "pc": 4381316172,
+          "binary": "Flutter",
+          "offset": 1889356,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "09",
+          "pc": 4381264600,
+          "binary": "Flutter",
+          "offset": 1837784,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "10",
+          "pc": 4381265400,
+          "binary": "Flutter",
+          "offset": 1838584,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "11",
+          "pc": 4381444040,
+          "binary": "Flutter",
+          "offset": 2017224,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "12",
+          "pc": 4381930916,
+          "binary": "Flutter",
+          "offset": 2504100,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "13",
+          "pc": 4384142796,
+          "binary": "Flutter",
+          "offset": 4715980,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "14",
+          "pc": 4380014092,
+          "binary": "Flutter",
+          "offset": 587276,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "15",
+          "pc": 4379529832,
+          "binary": "Flutter",
+          "offset": 103016,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "16",
+          "pc": 4379635340,
+          "binary": "Flutter",
+          "offset": 208524,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "17",
+          "pc": 4382648384,
+          "binary": "Flutter",
+          "offset": 3221568,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "18",
+          "pc": 4382651392,
+          "binary": "Flutter",
+          "offset": 3224576,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "19",
+          "pc": 4382649104,
+          "binary": "Flutter",
+          "offset": 3222288,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "20",
+          "pc": 4382675464,
+          "binary": "Flutter",
+          "offset": 3248648,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "21",
+          "pc": 4379679868,
+          "binary": "Flutter",
+          "offset": 253052,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "22",
+          "pc": 4379687920,
+          "binary": "Flutter",
+          "offset": 261104,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "23",
+          "pc": 6460161468,
+          "binary": "CoreFoundation",
+          "offset": 966076,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "24",
+          "pc": 6460160736,
+          "binary": "CoreFoundation",
+          "offset": 965344,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "25",
+          "pc": 6460158688,
+          "binary": "CoreFoundation",
+          "offset": 963296,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "26",
+          "pc": 6460149448,
+          "binary": "CoreFoundation",
+          "offset": 954056,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "27",
+          "pc": 6459231316,
+          "binary": "CoreFoundation",
+          "offset": 35924,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "28",
+          "pc": 6491393920,
+          "binary": "GraphicsServices",
+          "offset": 44928,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "29",
+          "pc": 6617929152,
+          "binary": "UIKit",
+          "offset": 472512,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "30",
+          "pc": 4298946228,
+          "binary": "ios_prod_global",
+          "offset": null,
+          "location": "-main.m:35",
+          "symbol": "main",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "31",
+          "pc": 6454117736,
+          "binary": "libdyld.dylib",
+          "offset": 5480,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        }
+      ],
+      "format": "custom",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "2eac514f26a676d1df0821e815d501149d3ead7f",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 0000000182e17a74 Metal Metal + 68212\n#01 00000001a0963190 AGXMetalA8 AGXMetalA8 + 520592\n#02 00000001a095c3f4 AGXMetalA8 AGXMetalA8 + 492532\n#03 00000001a093ea58 AGXMetalA8 AGXMetalA8 + 371288\n#04 0000000105340708 Flutter Flutter + 2836232\n                             GrMtlCommandBuffer::getRenderCommandEncoder(MTLRenderPassDescriptor*, GrMtlPipelineState const*, GrMtlOpsRenderPass*)\n                             third_party/skia/src/gpu/mtl/GrMtlCommandBuffer.mm:89:35\n#05 0000000105347e48 Flutter Flutter + 2866760\n                             GrMtlOpsRenderPass::precreateCmdEncoder()\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:37:36\n#06 0000000105348458 Flutter Flutter + 2868312\n                             GrMtlOpsRenderPass::setupRenderPass(GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:238:15\n                             GrMtlOpsRenderPass::GrMtlOpsRenderPass(GrMtlGpu*, GrRenderTarget*, GrSurfaceOrigin, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:27:0\n                             GrMtlOpsRenderPass::GrMtlOpsRenderPass(GrMtlGpu*, GrRenderTarget*, GrSurfaceOrigin, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:26:0\n#07 0000000105340fa4 Flutter Flutter + 2838436\n                             GrMtlGpu::getOpsRenderPass(GrRenderTarget*, GrStencilAttachment*, GrSurfaceOrigin, SkIRect const&, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&, SkTArray<GrSurfaceProxy*, true> const&, GrXferBarrierFlags)\n                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:192:16\n#08 000000010525944c Flutter Flutter + 1889356\n                             create_render_pass(GrGpu*, GrRenderTarget*, GrStencilAttachment*, GrSurfaceOrigin, SkIRect const&, GrLoadOp, SkRGBA4f<(SkAlphaType)2> const&, GrLoadOp, GrStoreOp, SkTArray<GrSurfaceProxy*, true> const&, GrXferBarrierFlags)\n                             third_party/skia/src/gpu/GrOpsTask.cpp:509:17\n                             GrOpsTask::onExecute(GrOpFlushState*)\n                             third_party/skia/src/gpu/GrOpsTask.cpp:593:0\n#09 000000010524cad8 Flutter Flutter + 1837784\n                             GrRenderTask::execute(GrOpFlushState*)\n                             third_party/skia/src/gpu/GrRenderTask.h:38:61\n                             GrDrawingManager::executeRenderTasks(int, int, GrOpFlushState*, int*)\n                             third_party/skia/src/gpu/GrDrawingManager.cpp:456:0\n                             GrDrawingManager::flush(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrDrawingManager.cpp:335:0\n#10 000000010524cdf8 Flutter Flutter + 1838584\n                             GrDrawingManager::flushSurfaces(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrDrawingManager.cpp:562:27\n#11 00000001052787c8 Flutter Flutter + 2017224\n                             GrDrawingManager::flushSurface(GrSurfaceProxy*, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrDrawingManager.h:109:22\n                             GrSurfaceContext::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrSurfaceContext.cpp:1232:0\n#12 00000001052ef5a4 Flutter Flutter + 2504100\n                             SkGpuDevice::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/SkGpuDevice.cpp:1054:34\n                             SkGpuDevice::flush()\n                             third_party/skia/src/gpu/SkGpuDevice.cpp:1045:0\n#13 000000010550b5cc Flutter Flutter + 4715980\n                             SkCanvas::flush()\n                             third_party/skia/src/core/SkCanvas.cpp:614:11\n                             flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0::operator()(flutter::SurfaceFrame const&, SkCanvas*) const\n                             flutter/shell/gpu/gpu_surface_metal.mm:89:0\n                             decltype(std::__1::forward<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&>(fp)(std::__1::forward<flutter::SurfaceFrame const&>(fp0), std::__1::forward<SkCanvas*>(fp0))) std::__1::__invoke<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*>(flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             bool std::__1::__invoke_void_return_wrapper<bool>::__call<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*>(flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:318:0\n                             std::__1::__function::__alloc_func<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0, std::__1::allocator<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0>, bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0, std::__1::allocator<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0>, bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#14 000000010511b60c Flutter Flutter + 587276\n                             std::__1::__function::__value_func<bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             flutter::SurfaceFrame::PerformSubmit()\n                             flutter/flow/surface_frame.cc:65:0\n                             flutter::SurfaceFrame::Submit()\n                             flutter/flow/surface_frame.cc:43:0\n#15 00000001050a5268 Flutter Flutter + 103016\n                             flutter::FlutterPlatformViewsController::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::IOSContext>, sk_sp<SkPicture>, SkRect, long long, long long)\n                             flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:634:41\n                             flutter::FlutterPlatformViewsController::SubmitFrame(GrDirectContext*, std::__1::shared_ptr<flutter::IOSContext>, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)\n                             flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:533:0\n#16 00000001050bee8c Flutter Flutter + 208524\n                             flutter::IOSSurface::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)\n                             flutter/shell/platform/darwin/ios/ios_surface.mm:121:31\n#17 000000010539e840 Flutter Flutter + 3221568\n                             flutter::Rasterizer::DrawToSurface(flutter::LayerTree&)\n                             flutter/shell/common/rasterizer.cc:474:31\n#18 000000010539f400 Flutter Flutter + 3224576\n                             flutter::Rasterizer::DoDraw(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)\n                             flutter/shell/common/rasterizer.cc:339:32\n                             flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const\n                             flutter/shell/common/rasterizer.cc:173:0\n                             decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&>(fp)(std::__1::forward<std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(fp0))) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0\n                             std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#19 000000010539eb10 Flutter Flutter + 3222288\n                             std::__1::__function::__value_func<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             flutter::Pipeline<flutter::LayerTree>::Consume(std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)> const&)\n                             flutter/shell/common/pipeline.h:161:0\n                             flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)\n                             flutter/shell/common/rasterizer.cc:177:0\n#20 00000001053a5208 Flutter Flutter + 3248648\n                             flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31::operator()() const\n                             flutter/shell/common/shell.cc:1046:23\n                             decltype(std::__1::forward<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(fp)()) std::__1::__invoke<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0\n                             std::__1::__function::__alloc_func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31>, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31>, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#21 00000001050c9c7c Flutter Flutter + 253052\n                             std::__1::__function::__value_func<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                             flutter/fml/message_loop_impl.cc:130:0\n#22 00000001050cbbf0 Flutter Flutter + 261104\n                             fml::MessageLoopImpl::RunExpiredTasksNow()\n                             flutter/fml/message_loop_impl.cc:143:3\n                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0\n#23 00000001810e3dbc CoreFoundation CoreFoundation + 966076\n#24 00000001810e3ae0 CoreFoundation CoreFoundation + 965344\n#25 00000001810e32e0 CoreFoundation CoreFoundation + 963296\n#26 00000001810e0ec8 CoreFoundation CoreFoundation + 954056\n#27 0000000181000c54 CoreFoundation CoreFoundation + 35924\n#28 0000000182eacf80 GraphicsServices GraphicsServices + 44928\n#29 000000018a7595c0 UIKit UIKit + 472512\n#30 00000001003cb6b4 ios_prod_global main -main.m:35\n#31 0000000180b20568 libdyld.dylib libdyld.dylib + 5480\n",
+    "notes": [
+      {
+        "kind": "loadBaseDetected",
+        "message": "000000010508c000"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test13.input.txt b/github-label-notifier/symbolizer/test/data/test13.input.txt
new file mode 100644
index 0000000..ecf2275
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test13.input.txt
@@ -0,0 +1,35 @@
+@flutter-symbolizer-bot engine#2eac514f26a676d1df0821e815d501149d3ead7f release arm64 internal ios this
+
+Thread 0  (id: 0x00000303) CRASHED [EXC_BAD_ACCESS / KERN_INVALID_ADDRESS @ 0x000002e0 ]Show exception record
+0x0000000182e17a74(Metal + 0x00010a74)
+0x00000001a0963190(AGXMetalA8 + 0x0007f190)
+0x00000001a095c3f4(AGXMetalA8 + 0x000783f4)
+0x00000001a093ea58(AGXMetalA8 + 0x0005aa58)
+0x0000000105340708(Flutter + 0x002b4708)
+0x0000000105347e48(Flutter + 0x002bbe48)
+0x0000000105348458(Flutter + 0x002bc458)
+0x0000000105340fa4(Flutter + 0x002b4fa4)
+0x000000010525944c(Flutter + 0x001cd44c)
+0x000000010524cad8(Flutter + 0x001c0ad8)
+0x000000010524cdf8(Flutter + 0x001c0df8)
+0x00000001052787c8(Flutter + 0x001ec7c8)
+0x00000001052ef5a4(Flutter + 0x002635a4)
+0x000000010550b5cc(Flutter + 0x0047f5cc)
+0x000000010511b60c(Flutter + 0x0008f60c)
+0x00000001050a5268(Flutter + 0x00019268)
+0x00000001050bee8c(Flutter + 0x00032e8c)
+0x000000010539e840(Flutter + 0x00312840)
+0x000000010539f400(Flutter + 0x00313400)
+0x000000010539eb10(Flutter + 0x00312b10)
+0x00000001053a5208(Flutter + 0x00319208)
+0x00000001050c9c7c(Flutter + 0x0003dc7c)
+0x00000001050cbbf0(Flutter + 0x0003fbf0)
+0x00000001810e3dbc(CoreFoundation + 0x000ebdbc)
+0x00000001810e3ae0(CoreFoundation + 0x000ebae0)
+0x00000001810e32e0(CoreFoundation + 0x000eb2e0)
+0x00000001810e0ec8(CoreFoundation + 0x000e8ec8)
+0x0000000181000c54(CoreFoundation + 0x00008c54)
+0x0000000182eacf80(GraphicsServices + 0x0000af80)
+0x000000018a7595c0(UIKit + 0x000735c0)
+0x00000001003cb6b4(ios_prod_global -main.m:35)main
+0x0000000180b20568(libdyld.dylib + 0x00001568)
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test14.expected.github.txt b/github-label-notifier/symbolizer/test/data/test14.expected.github.txt
new file mode 100644
index 0000000..b976127
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test14.expected.github.txt
@@ -0,0 +1,3 @@
+@somebody Sorry, only **public members of Flutter org** can trigger my services.
+
+Check your privacy settings as described [here](https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership).
diff --git a/github-label-notifier/symbolizer/test/data/test14.expected.txt b/github-label-notifier/symbolizer/test/data/test14.expected.txt
new file mode 100644
index 0000000..8e98a60
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test14.expected.txt
@@ -0,0 +1,318 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 6490782324,
+          "binary": "Metal",
+          "offset": 68212,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "01",
+          "pc": 6989164944,
+          "binary": "AGXMetalA8",
+          "offset": 520592,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "02",
+          "pc": 6989136884,
+          "binary": "AGXMetalA8",
+          "offset": 492532,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "03",
+          "pc": 6989015640,
+          "binary": "AGXMetalA8",
+          "offset": 371288,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "04",
+          "pc": 4382263048,
+          "binary": "Flutter",
+          "offset": 2836232,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "05",
+          "pc": 4382293576,
+          "binary": "Flutter",
+          "offset": 2866760,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "06",
+          "pc": 4382295128,
+          "binary": "Flutter",
+          "offset": 2868312,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "07",
+          "pc": 4382265252,
+          "binary": "Flutter",
+          "offset": 2838436,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "08",
+          "pc": 4381316172,
+          "binary": "Flutter",
+          "offset": 1889356,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "09",
+          "pc": 4381264600,
+          "binary": "Flutter",
+          "offset": 1837784,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "10",
+          "pc": 4381265400,
+          "binary": "Flutter",
+          "offset": 1838584,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "11",
+          "pc": 4381444040,
+          "binary": "Flutter",
+          "offset": 2017224,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "12",
+          "pc": 4381930916,
+          "binary": "Flutter",
+          "offset": 2504100,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "13",
+          "pc": 4384142796,
+          "binary": "Flutter",
+          "offset": 4715980,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "14",
+          "pc": 4380014092,
+          "binary": "Flutter",
+          "offset": 587276,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "15",
+          "pc": 4379529832,
+          "binary": "Flutter",
+          "offset": 103016,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "16",
+          "pc": 4379635340,
+          "binary": "Flutter",
+          "offset": 208524,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "17",
+          "pc": 4382648384,
+          "binary": "Flutter",
+          "offset": 3221568,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "18",
+          "pc": 4382651392,
+          "binary": "Flutter",
+          "offset": 3224576,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "19",
+          "pc": 4382649104,
+          "binary": "Flutter",
+          "offset": 3222288,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "20",
+          "pc": 4382675464,
+          "binary": "Flutter",
+          "offset": 3248648,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "21",
+          "pc": 4379679868,
+          "binary": "Flutter",
+          "offset": 253052,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "22",
+          "pc": 4379687920,
+          "binary": "Flutter",
+          "offset": 261104,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "23",
+          "pc": 6460161468,
+          "binary": "CoreFoundation",
+          "offset": 966076,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "24",
+          "pc": 6460160736,
+          "binary": "CoreFoundation",
+          "offset": 965344,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "25",
+          "pc": 6460158688,
+          "binary": "CoreFoundation",
+          "offset": 963296,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "26",
+          "pc": 6460149448,
+          "binary": "CoreFoundation",
+          "offset": 954056,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "27",
+          "pc": 6459231316,
+          "binary": "CoreFoundation",
+          "offset": 35924,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "28",
+          "pc": 6491393920,
+          "binary": "GraphicsServices",
+          "offset": 44928,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "29",
+          "pc": 6617929152,
+          "binary": "UIKit",
+          "offset": 472512,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "30",
+          "pc": 4298946228,
+          "binary": "ios_prod_global",
+          "offset": null,
+          "location": "-main.m:35",
+          "symbol": "main",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "31",
+          "pc": 6454117736,
+          "binary": "libdyld.dylib",
+          "offset": 5480,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        }
+      ],
+      "format": "custom",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "2eac514f26a676d1df0821e815d501149d3ead7f",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 0000000182e17a74 Metal Metal + 68212\n#01 00000001a0963190 AGXMetalA8 AGXMetalA8 + 520592\n#02 00000001a095c3f4 AGXMetalA8 AGXMetalA8 + 492532\n#03 00000001a093ea58 AGXMetalA8 AGXMetalA8 + 371288\n#04 0000000105340708 Flutter Flutter + 2836232\n                             GrMtlCommandBuffer::getRenderCommandEncoder(MTLRenderPassDescriptor*, GrMtlPipelineState const*, GrMtlOpsRenderPass*)\n                             third_party/skia/src/gpu/mtl/GrMtlCommandBuffer.mm:89:35\n#05 0000000105347e48 Flutter Flutter + 2866760\n                             GrMtlOpsRenderPass::precreateCmdEncoder()\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:37:36\n#06 0000000105348458 Flutter Flutter + 2868312\n                             GrMtlOpsRenderPass::setupRenderPass(GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:238:15\n                             GrMtlOpsRenderPass::GrMtlOpsRenderPass(GrMtlGpu*, GrRenderTarget*, GrSurfaceOrigin, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:27:0\n                             GrMtlOpsRenderPass::GrMtlOpsRenderPass(GrMtlGpu*, GrRenderTarget*, GrSurfaceOrigin, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&)\n                             third_party/skia/src/gpu/mtl/GrMtlOpsRenderPass.mm:26:0\n#07 0000000105340fa4 Flutter Flutter + 2838436\n                             GrMtlGpu::getOpsRenderPass(GrRenderTarget*, GrStencilAttachment*, GrSurfaceOrigin, SkIRect const&, GrOpsRenderPass::LoadAndStoreInfo const&, GrOpsRenderPass::StencilLoadAndStoreInfo const&, SkTArray<GrSurfaceProxy*, true> const&, GrXferBarrierFlags)\n                             third_party/skia/src/gpu/mtl/GrMtlGpu.mm:192:16\n#08 000000010525944c Flutter Flutter + 1889356\n                             create_render_pass(GrGpu*, GrRenderTarget*, GrStencilAttachment*, GrSurfaceOrigin, SkIRect const&, GrLoadOp, SkRGBA4f<(SkAlphaType)2> const&, GrLoadOp, GrStoreOp, SkTArray<GrSurfaceProxy*, true> const&, GrXferBarrierFlags)\n                             third_party/skia/src/gpu/GrOpsTask.cpp:509:17\n                             GrOpsTask::onExecute(GrOpFlushState*)\n                             third_party/skia/src/gpu/GrOpsTask.cpp:593:0\n#09 000000010524cad8 Flutter Flutter + 1837784\n                             GrRenderTask::execute(GrOpFlushState*)\n                             third_party/skia/src/gpu/GrRenderTask.h:38:61\n                             GrDrawingManager::executeRenderTasks(int, int, GrOpFlushState*, int*)\n                             third_party/skia/src/gpu/GrDrawingManager.cpp:456:0\n                             GrDrawingManager::flush(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrDrawingManager.cpp:335:0\n#10 000000010524cdf8 Flutter Flutter + 1838584\n                             GrDrawingManager::flushSurfaces(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrDrawingManager.cpp:562:27\n#11 00000001052787c8 Flutter Flutter + 2017224\n                             GrDrawingManager::flushSurface(GrSurfaceProxy*, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrDrawingManager.h:109:22\n                             GrSurfaceContext::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/GrSurfaceContext.cpp:1232:0\n#12 00000001052ef5a4 Flutter Flutter + 2504100\n                             SkGpuDevice::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrBackendSurfaceMutableState const*)\n                             third_party/skia/src/gpu/SkGpuDevice.cpp:1054:34\n                             SkGpuDevice::flush()\n                             third_party/skia/src/gpu/SkGpuDevice.cpp:1045:0\n#13 000000010550b5cc Flutter Flutter + 4715980\n                             SkCanvas::flush()\n                             third_party/skia/src/core/SkCanvas.cpp:614:11\n                             flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0::operator()(flutter::SurfaceFrame const&, SkCanvas*) const\n                             flutter/shell/gpu/gpu_surface_metal.mm:89:0\n                             decltype(std::__1::forward<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&>(fp)(std::__1::forward<flutter::SurfaceFrame const&>(fp0), std::__1::forward<SkCanvas*>(fp0))) std::__1::__invoke<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*>(flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             bool std::__1::__invoke_void_return_wrapper<bool>::__call<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*>(flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0&, flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:318:0\n                             std::__1::__function::__alloc_func<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0, std::__1::allocator<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0>, bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0, std::__1::allocator<flutter::GPUSurfaceMetal::AcquireFrame(SkISize const&)::$_0>, bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#14 000000010511b60c Flutter Flutter + 587276\n                             std::__1::__function::__value_func<bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*&&) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<bool (flutter::SurfaceFrame const&, SkCanvas*)>::operator()(flutter::SurfaceFrame const&, SkCanvas*) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             flutter::SurfaceFrame::PerformSubmit()\n                             flutter/flow/surface_frame.cc:65:0\n                             flutter::SurfaceFrame::Submit()\n                             flutter/flow/surface_frame.cc:43:0\n#15 00000001050a5268 Flutter Flutter + 103016\n                             flutter::FlutterPlatformViewsController::GetLayer(GrDirectContext*, std::__1::shared_ptr<flutter::IOSContext>, sk_sp<SkPicture>, SkRect, long long, long long)\n                             flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:634:41\n                             flutter::FlutterPlatformViewsController::SubmitFrame(GrDirectContext*, std::__1::shared_ptr<flutter::IOSContext>, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)\n                             flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:533:0\n#16 00000001050bee8c Flutter Flutter + 208524\n                             flutter::IOSSurface::SubmitFrame(GrDirectContext*, std::__1::unique_ptr<flutter::SurfaceFrame, std::__1::default_delete<flutter::SurfaceFrame> >)\n                             flutter/shell/platform/darwin/ios/ios_surface.mm:121:31\n#17 000000010539e840 Flutter Flutter + 3221568\n                             flutter::Rasterizer::DrawToSurface(flutter::LayerTree&)\n                             flutter/shell/common/rasterizer.cc:474:31\n#18 000000010539f400 Flutter Flutter + 3224576\n                             flutter::Rasterizer::DoDraw(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)\n                             flutter/shell/common/rasterizer.cc:339:32\n                             flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const\n                             flutter/shell/common/rasterizer.cc:173:0\n                             decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&>(fp)(std::__1::forward<std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(fp0))) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0\n                             std::__1::__function::__alloc_func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)::$_1>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#19 000000010539eb10 Flutter Flutter + 3222288\n                             std::__1::__function::__value_func<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             flutter::Pipeline<flutter::LayerTree>::Consume(std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)> const&)\n                             flutter/shell/common/pipeline.h:161:0\n                             flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, std::__1::function<bool (flutter::LayerTree&)>)\n                             flutter/shell/common/rasterizer.cc:177:0\n#20 00000001053a5208 Flutter Flutter + 3248648\n                             flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31::operator()() const\n                             flutter/shell/common/shell.cc:1046:23\n                             decltype(std::__1::forward<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(fp)()) std::__1::__invoke<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:4361:0\n                             void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31&)\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__functional_base:349:0\n                             std::__1::__function::__alloc_func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31>, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1527:0\n                             std::__1::__function::__func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >, fml::TimePoint)::$_31>, void ()>::operator()()\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1651:0\n#21 00000001050c9c7c Flutter Flutter + 253052\n                             std::__1::__function::__value_func<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1799:16\n                             std::__1::function<void ()>::operator()() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:2347:0\n                             fml::MessageLoopImpl::FlushTasks(fml::FlushType)\n                             flutter/fml/message_loop_impl.cc:130:0\n#22 00000001050cbbf0 Flutter Flutter + 261104\n                             fml::MessageLoopImpl::RunExpiredTasksNow()\n                             flutter/fml/message_loop_impl.cc:143:3\n                             fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*)\n                             flutter/fml/platform/darwin/message_loop_darwin.mm:75:0\n#23 00000001810e3dbc CoreFoundation CoreFoundation + 966076\n#24 00000001810e3ae0 CoreFoundation CoreFoundation + 965344\n#25 00000001810e32e0 CoreFoundation CoreFoundation + 963296\n#26 00000001810e0ec8 CoreFoundation CoreFoundation + 954056\n#27 0000000181000c54 CoreFoundation CoreFoundation + 35924\n#28 0000000182eacf80 GraphicsServices GraphicsServices + 44928\n#29 000000018a7595c0 UIKit UIKit + 472512\n#30 00000001003cb6b4 ios_prod_global main -main.m:35\n#31 0000000180b20568 libdyld.dylib libdyld.dylib + 5480\n",
+    "notes": [
+      {
+        "kind": "loadBaseDetected",
+        "message": "000000010508c000"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test14.input.txt b/github-label-notifier/symbolizer/test/data/test14.input.txt
new file mode 100644
index 0000000..cf29d95
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test14.input.txt
@@ -0,0 +1,36 @@
+@flutter-symbolizer-bot engine#2eac514f26a676d1df0821e815d501149d3ead7f release arm64 internal ios this
+/unauthorized
+
+Thread 0  (id: 0x00000303) CRASHED [EXC_BAD_ACCESS / KERN_INVALID_ADDRESS @ 0x000002e0 ]Show exception record
+0x0000000182e17a74(Metal + 0x00010a74)
+0x00000001a0963190(AGXMetalA8 + 0x0007f190)
+0x00000001a095c3f4(AGXMetalA8 + 0x000783f4)
+0x00000001a093ea58(AGXMetalA8 + 0x0005aa58)
+0x0000000105340708(Flutter + 0x002b4708)
+0x0000000105347e48(Flutter + 0x002bbe48)
+0x0000000105348458(Flutter + 0x002bc458)
+0x0000000105340fa4(Flutter + 0x002b4fa4)
+0x000000010525944c(Flutter + 0x001cd44c)
+0x000000010524cad8(Flutter + 0x001c0ad8)
+0x000000010524cdf8(Flutter + 0x001c0df8)
+0x00000001052787c8(Flutter + 0x001ec7c8)
+0x00000001052ef5a4(Flutter + 0x002635a4)
+0x000000010550b5cc(Flutter + 0x0047f5cc)
+0x000000010511b60c(Flutter + 0x0008f60c)
+0x00000001050a5268(Flutter + 0x00019268)
+0x00000001050bee8c(Flutter + 0x00032e8c)
+0x000000010539e840(Flutter + 0x00312840)
+0x000000010539f400(Flutter + 0x00313400)
+0x000000010539eb10(Flutter + 0x00312b10)
+0x00000001053a5208(Flutter + 0x00319208)
+0x00000001050c9c7c(Flutter + 0x0003dc7c)
+0x00000001050cbbf0(Flutter + 0x0003fbf0)
+0x00000001810e3dbc(CoreFoundation + 0x000ebdbc)
+0x00000001810e3ae0(CoreFoundation + 0x000ebae0)
+0x00000001810e32e0(CoreFoundation + 0x000eb2e0)
+0x00000001810e0ec8(CoreFoundation + 0x000e8ec8)
+0x0000000181000c54(CoreFoundation + 0x00008c54)
+0x0000000182eacf80(GraphicsServices + 0x0000af80)
+0x000000018a7595c0(UIKit + 0x000735c0)
+0x00000001003cb6b4(ios_prod_global -main.m:35)main
+0x0000000180b20568(libdyld.dylib + 0x00001568)
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test15.expected.github.txt b/github-label-notifier/symbolizer/test/data/test15.expected.github.txt
new file mode 100644
index 0000000..c7aeeb4
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test15.expected.github.txt
@@ -0,0 +1,18 @@
+
+<details>
+<summary>There were failures symbolizing some of the crashes I found</summary>
+
+When processing null I found crash
+
+```
+Crash(engineVariant: EngineVariant(os: android, arch: null, mode: null), frames: [CrashFrame.android(no: 00, pc: 107580, binary: /system/lib/libc.so, rest:  (abort+63), buildId: null), CrashFrame.android(no: 01, pc: 2870917, binary: /data/app/com.example.app/lib/arm/libflutter.so, rest:  (offset 0x1002000), buildId: null)], format: native, androidMajorVersion: 8)
+```
+
+but failed to symbolize it with the following notes:
+
+* Unknown engine hash
+
+See [my documentation](https://github.com/flutter-symbolizer-bot/flutter-symbolizer-bot/blob/main/README.md#commands) for more details.
+</details>
+
+<!-- {"symbolized":[]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test15.expected.txt b/github-label-notifier/symbolizer/test/data/test15.expected.txt
new file mode 100644
index 0000000..fdd22af
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test15.expected.txt
@@ -0,0 +1,39 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": null,
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 107580,
+          "binary": "/system/lib/libc.so",
+          "rest": " (abort+63)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 2870917,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "rest": " (offset 0x1002000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 8
+    },
+    "engineBuild": null,
+    "symbolized": null,
+    "notes": [
+      {
+        "kind": "unknownEngineHash",
+        "message": null
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test15.input.txt b/github-label-notifier/symbolizer/test/data/test15.input.txt
new file mode 100644
index 0000000..95d4d89
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test15.input.txt
@@ -0,0 +1,14 @@
+```bash
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Build fingerprint: '...:8.1.0/.../...:...'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Revision: '0'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: pid: 11111, tid: 22222, name: DartWorker  >>> com.example.app <<<
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r0 00000000  r1 00000000  r2 00000000  r3 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r4 00000000  r5 00000000  r6 00000000  r7 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r8 00000000  r9 00000000  sl 00000000  fp 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     ip 00000000  sp 00000000  lr 00000000  pc 00000000  cpsr 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: backtrace:
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #00 pc 0001a43c  /system/lib/libc.so (abort+63)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #01 pc 002bce85  /data/app/com.example.app/lib/arm/libflutter.so (offset 0x1002000)
+```
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test16.expected.github.txt b/github-label-notifier/symbolizer/test/data/test16.expected.github.txt
new file mode 100644
index 0000000..5c43374
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test16.expected.github.txt
@@ -0,0 +1,18 @@
+
+<details>
+<summary>There were failures symbolizing some of the crashes I found</summary>
+
+When processing null I found crash
+
+```
+Crash(engineVariant: EngineVariant(os: android, arch: null, mode: null), frames: [CrashFrame.android(no: 00, pc: 107580, binary: /system/lib/libc.so, rest:  (abort+63), buildId: null), CrashFrame.android(no: 01, pc: 2870917, binary: /data/app/com.example.app/lib/arm/libflutter.so, rest:  (offset 0x1002000), buildId: null)], format: native, androidMajorVersion: 8)
+```
+
+but failed to symbolize it with the following notes:
+
+* Unknown engine ABI
+
+See [my documentation](https://github.com/flutter-symbolizer-bot/flutter-symbolizer-bot/blob/main/README.md#commands) for more details.
+</details>
+
+<!-- {"symbolized":[]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test16.expected.txt b/github-label-notifier/symbolizer/test/data/test16.expected.txt
new file mode 100644
index 0000000..ce29b59
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test16.expected.txt
@@ -0,0 +1,39 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": null,
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 107580,
+          "binary": "/system/lib/libc.so",
+          "rest": " (abort+63)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 2870917,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "rest": " (offset 0x1002000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 8
+    },
+    "engineBuild": null,
+    "symbolized": null,
+    "notes": [
+      {
+        "kind": "unknownAbi",
+        "message": null
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test16.input.txt b/github-label-notifier/symbolizer/test/data/test16.input.txt
new file mode 100644
index 0000000..7d64072
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test16.input.txt
@@ -0,0 +1,19 @@
+```bash
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Build fingerprint: '...:8.1.0/.../...:...'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Revision: '0'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: pid: 11111, tid: 22222, name: DartWorker  >>> com.example.app <<<
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r0 00000000  r1 00000000  r2 00000000  r3 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r4 00000000  r5 00000000  r6 00000000  r7 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r8 00000000  r9 00000000  sl 00000000  fp 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     ip 00000000  sp 00000000  lr 00000000  pc 00000000  cpsr 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: backtrace:
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #00 pc 0001a43c  /system/lib/libc.so (abort+63)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #01 pc 002bce85  /data/app/com.example.app/lib/arm/libflutter.so (offset 0x1002000)
+```
+
+```bash
+Doctor summary (to see all details, run flutter doctor -v):
+[✓] Flutter (Channel stable, 1.22.1, on xxxx, locale xxxx)
+```
diff --git a/github-label-notifier/symbolizer/test/data/test17.expected.github.txt b/github-label-notifier/symbolizer/test/data/test17.expected.github.txt
new file mode 100644
index 0000000..4e170da
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test17.expected.github.txt
@@ -0,0 +1,131 @@
+
+<details>
+<summary>There were failures symbolizing some of the crashes I found</summary>
+
+When processing null I found crash
+
+```
+Crash(engineVariant: EngineVariant(os: android, arch: arm, mode: null), frames: [CrashFrame.android(no: 00, pc: 107580, binary: /system/lib/libc.so, rest:  (abort+63), buildId: null), CrashFrame.android(no: 01, pc: 2870917, binary: /data/app/com.example.app/lib/arm/libflutter.so, rest:  (offset 0x1002000), buildId: null)], format: native, androidMajorVersion: 8)
+```
+
+but failed to symbolize it with the following notes:
+
+* Exception occurred while symbolizing:
+    ```
+    {EngineBuild(engineHash: 75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d, variant: EngineVariant(os: android, arch: arm, mode: release))} Failed to download EngineBuild(engineHash: 75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d, variant: EngineVariant(os: android, arch: arm, mode: release))
+    #0      SymbolsCacheProxy.get (file:///Users/vegorov/src/dart_ci/github-label-notifier/symbolizer/test/bot_test.dart:38:7)
+    #1      Symbolizer._symbolizeCrashWith (package:symbolizer/symbolizer.dart:100:40)
+    #2      Symbolizer._symbolizeCrash (package:symbolizer/symbolizer.dart:156:24)
+    #3      Symbolizer.symbolize.<anonymous closure> (package:symbolizer/symbolizer.dart:58:32)
+    #4      MappedListIterable.elementAt (dart:_internal/iterable.dart:417:31)
+    #5      ListIterator.moveNext (dart:_internal/iterable.dart:343:26)
+    #6      Future.wait (dart:async/future.dart:406:26)
+    #7      Symbolizer.symbolize (package:symbolizer/symbolizer.dart:57:25)
+    <asynchronous suspension>
+    #8      Bot.symbolizeGiven (package:symbolizer/bot.dart:249:28)
+    #9      Bot.executeCommand (package:symbolizer/bot.dart:189:11)
+    <asynchronous suspension>
+    #10     main.<anonymous closure>.<anonymous closure> (file:///Users/vegorov/src/dart_ci/github-label-notifier/symbolizer/test/bot_test.dart:183:19)
+    <asynchronous suspension>
+    #11     main.<anonymous closure>.<anonymous closure> (file:///Users/vegorov/src/dart_ci/github-label-notifier/symbolizer/test/bot_test.dart)
+    #12     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:200:19)
+    <asynchronous suspension>
+    #13     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart)
+    #14     _rootRun (dart:async/zone.dart:1190:13)
+    #15     _CustomZone.run (dart:async/zone.dart:1093:19)
+    #16     _runZoned (dart:async/zone.dart:1630:10)
+    #17     runZoned (dart:async/zone.dart:1550:10)
+    #18     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:198:13)
+    #19     Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:231:15)
+    #20     _rootRun (dart:async/zone.dart:1190:13)
+    #21     _CustomZone.run (dart:async/zone.dart:1093:19)
+    #22     _runZoned (dart:async/zone.dart:1630:10)
+    #23     runZoned (dart:async/zone.dart:1550:10)
+    #24     Invoker.waitForOutstandingCallbacks (package:test_api/src/backend/invoker.dart:228:5)
+    #25     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:383:17)
+    <asynchronous suspension>
+    #26     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart)
+    #27     _rootRun (dart:async/zone.dart:1190:13)
+    #28     _CustomZone.run (dart:async/zone.dart:1093:19)
+    #29     _runZoned (dart:async/zone.dart:1630:10)
+    #30     runZoned (dart:async/zone.dart:1550:10)
+    #31     Invoker._onRun.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:370:9)
+    #32     Invoker._guardIfGuarded (package:test_api/src/backend/invoker.dart:415:15)
+    #33     Invoker._onRun.<anonymous closure> (package:test_api/src/backend/invoker.dart:369:7)
+    #34     _rootRun (dart:async/zone.dart:1190:13)
+    #35     _CustomZone.run (dart:async/zone.dart:1093:19)
+    #36     _runZoned (dart:async/zone.dart:1630:10)
+    #37     runZoned (dart:async/zone.dart:1550:10)
+    #38     Chain.capture (package:stack_trace/src/chain.dart:98:14)
+    #39     Invoker._onRun (package:test_api/src/backend/invoker.dart:368:11)
+    #40     LiveTestController.run (package:test_api/src/backend/live_test_controller.dart:153:11)
+    #41     RemoteListener._runLiveTest.<anonymous closure> (package:test_api/src/remote_listener.dart:256:16)
+    #42     _rootRun (dart:async/zone.dart:1190:13)
+    #43     _CustomZone.run (dart:async/zone.dart:1093:19)
+    #44     _runZoned (dart:async/zone.dart:1630:10)
+    #45     runZoned (dart:async/zone.dart:1550:10)
+    #46     RemoteListener._runLiveTest (package:test_api/src/remote_listener.dart:255:5)
+    #47     RemoteListener._serializeTest.<anonymous closure> (package:test_api/src/remote_listener.dart:208:7)
+    #48     _rootRunUnary (dart:async/zone.dart:1198:47)
+    #49     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
+    #50     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
+    #51     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #52     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #53     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #54     _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #55     _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #56     _rootRunUnary (dart:async/zone.dart:1206:13)
+    #57     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
+    #58     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
+    #59     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #60     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #61     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #62     _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #63     _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #64     _StreamSinkWrapper.add (dart:async/stream_controller.dart:900:13)
+    #65     _GuaranteeSink.add (package:stream_channel/src/guarantee_channel.dart:125:12)
+    #66     new _MultiChannel.<anonymous closure> (package:stream_channel/src/multi_channel.dart:159:31)
+    #67     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #68     CastStreamSubscription._onData (dart:_internal/async_cast.dart:85:11)
+    #69     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #70     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #71     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #72     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #73     _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #74     _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #75     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #76     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #77     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #78     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #79     _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #80     _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #81     _StreamSinkWrapper.add (dart:async/stream_controller.dart:900:13)
+    #82     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #83     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #84     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #85     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #86     _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #87     _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #88     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #89     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #90     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #91     _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #92     _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #93     _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #94     _StreamSinkWrapper.add (dart:async/stream_controller.dart:900:13)
+    #95     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #96     CastStreamSubscription._onData (dart:_internal/async_cast.dart:85:11)
+    #97     _RootZone.runUnaryGuarded (dart:async/zone.dart:1384:10)
+    #98     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
+    #99     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
+    #100    _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:808:19)
+    #101    _StreamController._add (dart:async/stream_controller.dart:682:7)
+    #102    _StreamController.add (dart:async/stream_controller.dart:624:5)
+    #103    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
+    
+    ```
+
+See [my documentation](https://github.com/flutter-symbolizer-bot/flutter-symbolizer-bot/blob/main/README.md#commands) for more details.
+</details>
+
+<!-- {"symbolized":[]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test17.expected.txt b/github-label-notifier/symbolizer/test/data/test17.expected.txt
new file mode 100644
index 0000000..d3491ea
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test17.expected.txt
@@ -0,0 +1,46 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": null
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 107580,
+          "binary": "/system/lib/libc.so",
+          "rest": " (abort+63)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 2870917,
+          "binary": "/data/app/com.example.app/lib/arm/libflutter.so",
+          "rest": " (offset 0x1002000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 8
+    },
+    "engineBuild": {
+      "engineHash": "75bef9f6c8ac2ed4e1e04cdfcd88b177d9f1850d",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 0001a43c /system/lib/libc.so (abort+63)\n#01 002bce85 <...>/lib/arm/libflutter.so (offset 0x1002000)\n                                         EllipticalRRectOp::EllipticalRRectOp(GrSimpleMeshDrawOpHelper::MakeArgs, SkRGBA4f<(SkAlphaType)2> const&, SkMatrix const&, SkRect const&, float, float, SkPoint, bool)\n                                         third_party/skia/src/gpu/ops/GrOvalOpFactory.cpp:2896:18\n",
+    "notes": [
+      {
+        "kind": "defaultedToReleaseBuildIdUnavailable",
+        "message": null
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test17.input.txt b/github-label-notifier/symbolizer/test/data/test17.input.txt
new file mode 100644
index 0000000..4dc625d
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test17.input.txt
@@ -0,0 +1,22 @@
+/throw
+
+```bash
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Build fingerprint: '...:8.1.0/.../...:...'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: Revision: '0'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: ABI: 'arm'
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: pid: 11111, tid: 22222, name: DartWorker  >>> com.example.app <<<
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r0 00000000  r1 00000000  r2 00000000  r3 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r4 00000000  r5 00000000  r6 00000000  r7 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     r8 00000000  r9 00000000  sl 00000000  fp 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     ip 00000000  sp 00000000  lr 00000000  pc 00000000  cpsr 00000000
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG: backtrace:
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #00 pc 0001a43c  /system/lib/libc.so (abort+63)
+0000-00-00 00:00:00.000 33333-33333/? A/DEBUG:     #01 pc 002bce85  /data/app/com.example.app/lib/arm/libflutter.so (offset 0x1002000)
+```
+
+```bash
+Doctor summary (to see all details, run flutter doctor -v):
+[✓] Flutter (Channel stable, 1.22.1, on xxxx, locale xxxx)
+```
diff --git a/github-label-notifier/symbolizer/test/data/test18.expected.github.txt b/github-label-notifier/symbolizer/test/data/test18.expected.github.txt
new file mode 100644
index 0000000..fd017ed
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test18.expected.github.txt
@@ -0,0 +1,44 @@
+crash from null symbolized using symbols for `defa8be2b10650dad50dfee9324ed8d16eeec13f` `ios-arm64-release`
+```
+#00 000000010604661c Flutter Flutter + 4089372
+                             std::__1::unique_ptr<bssl::SSL_HANDSHAKE, bssl::internal::Deleter<bssl::SSL_HANDSHAKE> >::get() const
+                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:2625:19
+                             SSL_in_init
+                             third_party/boringssl/src/ssl/ssl_lib.cc:2673:0
+                             SSL_get_session
+                             third_party/boringssl/src/ssl/ssl_session.cc:1060:0
+                             SSL_get_peer_full_cert_chain
+                             third_party/boringssl/src/ssl/ssl_x509.cc:554:0
+                             dart::bin::TrustEvaluateHandler(long long, _Dart_CObject*)
+                             third_party/dart/runtime/bin/security_context_macos.cc:181:0
+#01 0000000106046604 Flutter Flutter + 4089348
+                             dart::bin::CObject::operator new(unsigned long)
+                             third_party/dart/runtime/bin/dartutils.h:332:44
+                             dart::bin::CObjectArray::operator[](long) const
+                             third_party/dart/runtime/bin/dartutils.h:508:0
+                             dart::bin::TrustEvaluateHandler(long long, _Dart_CObject*)
+                             third_party/dart/runtime/bin/security_context_macos.cc:178:0
+#02 000000010613e080 Flutter Flutter + 5103744
+                             dart::NativeMessageHandler::HandleMessage(std::__1::unique_ptr<dart::Message, std::__1::default_delete<dart::Message> >)
+                             third_party/dart/runtime/vm/native_message_handler.cc:43:3
+#03 000000010613c7bc Flutter Flutter + 5097404
+                             dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)
+                             third_party/dart/runtime/vm/message_handler.cc:233:16
+#04 000000010613c3a0 Flutter Flutter + 5096352
+                             dart::MessageHandler::TaskCallback()
+                             third_party/dart/runtime/vm/message_handler.cc:443:18
+                             dart::MessageHandlerTask::Run()
+                             third_party/dart/runtime/vm/message_handler.cc:31:0
+#05 00000001061be4e0 Flutter Flutter + 5629152
+                             dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*)
+                             third_party/dart/runtime/vm/thread_pool.cc:158:15
+                             dart::ThreadPool::Worker::Main(unsigned long)
+                             third_party/dart/runtime/vm/thread_pool.cc:323:0
+#06 0000000106176c04 Flutter Flutter + 5336068
+                             dart::ThreadStart(void*)
+                             third_party/dart/runtime/vm/os_thread_macos.cc:132:5
+#07 00000001f6849ca4 libsystem_pthread.dylib libsystem_pthread.dylib + 7332
+
+```
+_(Load address missing from the report, detected heuristically: 0000000105c60000)_
+<!-- {"symbolized":[1001]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test18.expected.txt b/github-label-notifier/symbolizer/test/data/test18.expected.txt
new file mode 100644
index 0000000..769cd53
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test18.expected.txt
@@ -0,0 +1,102 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 4395918876,
+          "binary": "Flutter",
+          "offset": 4089372,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "01",
+          "pc": 4395918852,
+          "binary": "Flutter",
+          "offset": 4089348,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "02",
+          "pc": 4396933248,
+          "binary": "Flutter",
+          "offset": 5103744,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "03",
+          "pc": 4396926908,
+          "binary": "Flutter",
+          "offset": 5097404,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "04",
+          "pc": 4396925856,
+          "binary": "Flutter",
+          "offset": 5096352,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "05",
+          "pc": 4397458656,
+          "binary": "Flutter",
+          "offset": 5629152,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "06",
+          "pc": 4397165572,
+          "binary": "Flutter",
+          "offset": 5336068,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        },
+        {
+          "no": "07",
+          "pc": 8430853284,
+          "binary": "libsystem_pthread.dylib",
+          "offset": 7332,
+          "location": null,
+          "symbol": "",
+          "runtimeType": "custom"
+        }
+      ],
+      "format": "custom",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "defa8be2b10650dad50dfee9324ed8d16eeec13f",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 000000010604661c Flutter Flutter + 4089372\n                             std::__1::unique_ptr<bssl::SSL_HANDSHAKE, bssl::internal::Deleter<bssl::SSL_HANDSHAKE> >::get() const\n                             /opt/s/w/ir/cache/osx_sdk/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:2625:19\n                             SSL_in_init\n                             third_party/boringssl/src/ssl/ssl_lib.cc:2673:0\n                             SSL_get_session\n                             third_party/boringssl/src/ssl/ssl_session.cc:1060:0\n                             SSL_get_peer_full_cert_chain\n                             third_party/boringssl/src/ssl/ssl_x509.cc:554:0\n                             dart::bin::TrustEvaluateHandler(long long, _Dart_CObject*)\n                             third_party/dart/runtime/bin/security_context_macos.cc:181:0\n#01 0000000106046604 Flutter Flutter + 4089348\n                             dart::bin::CObject::operator new(unsigned long)\n                             third_party/dart/runtime/bin/dartutils.h:332:44\n                             dart::bin::CObjectArray::operator[](long) const\n                             third_party/dart/runtime/bin/dartutils.h:508:0\n                             dart::bin::TrustEvaluateHandler(long long, _Dart_CObject*)\n                             third_party/dart/runtime/bin/security_context_macos.cc:178:0\n#02 000000010613e080 Flutter Flutter + 5103744\n                             dart::NativeMessageHandler::HandleMessage(std::__1::unique_ptr<dart::Message, std::__1::default_delete<dart::Message> >)\n                             third_party/dart/runtime/vm/native_message_handler.cc:43:3\n#03 000000010613c7bc Flutter Flutter + 5097404\n                             dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)\n                             third_party/dart/runtime/vm/message_handler.cc:233:16\n#04 000000010613c3a0 Flutter Flutter + 5096352\n                             dart::MessageHandler::TaskCallback()\n                             third_party/dart/runtime/vm/message_handler.cc:443:18\n                             dart::MessageHandlerTask::Run()\n                             third_party/dart/runtime/vm/message_handler.cc:31:0\n#05 00000001061be4e0 Flutter Flutter + 5629152\n                             dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*)\n                             third_party/dart/runtime/vm/thread_pool.cc:158:15\n                             dart::ThreadPool::Worker::Main(unsigned long)\n                             third_party/dart/runtime/vm/thread_pool.cc:323:0\n#06 0000000106176c04 Flutter Flutter + 5336068\n                             dart::ThreadStart(void*)\n                             third_party/dart/runtime/vm/os_thread_macos.cc:132:5\n#07 00000001f6849ca4 libsystem_pthread.dylib libsystem_pthread.dylib + 7332\n",
+    "notes": [
+      {
+        "kind": "loadBaseDetected",
+        "message": "0000000105c60000"
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test18.input.txt b/github-label-notifier/symbolizer/test/data/test18.input.txt
new file mode 100644
index 0000000..a8a4552
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test18.input.txt
@@ -0,0 +1,10 @@
+@flutter-symbolizer-bot internal engine#defa8be2b10650dad50dfee9324ed8d16eeec13f ios release arm64 this
+
+0x000000010604661c	(Flutter + 0x003e661c)
+0x0000000106046604	(Flutter + 0x003e6604)
+0x000000010613e080	(Flutter + 0x004de080)
+0x000000010613c7bc	(Flutter + 0x004dc7bc)
+0x000000010613c3a0	(Flutter + 0x004dc3a0)
+0x00000001061be4e0	(Flutter + 0x0055e4e0)
+0x0000000106176c04	(Flutter + 0x00516c04)
+0x00000001f6849ca4	(libsystem_pthread.dylib + 0x00001ca4)
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test19.expected.github.txt b/github-label-notifier/symbolizer/test/data/test19.expected.github.txt
new file mode 100644
index 0000000..f0dce51
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test19.expected.github.txt
@@ -0,0 +1,13 @@
+crash from null symbolized using symbols for `014da89eb01520ab7bbeba9971f852488ee80eaf` `android-arm-profile`
+```
+#00 00066638 /system/lib/libc.so (ifree+219)
+#01 000669e7 /system/lib/libc.so (je_free+74)
+#02 0039fc47 <...>/lib/arm/libflutter.so (offset 0x508000)
+                                         dart::TimelineEventArguments::Free()
+                                         third_party/dart/runtime/vm/timeline.cc:386:3
+                                         dart::TimelineEvent::Init(dart::TimelineEvent::EventType, char const*)
+                                         third_party/dart/runtime/vm/timeline.cc:581:14
+
+```
+
+<!-- {"symbolized":[1042]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test19.expected.txt b/github-label-notifier/symbolizer/test/data/test19.expected.txt
new file mode 100644
index 0000000..12ce4bc
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test19.expected.txt
@@ -0,0 +1,49 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "profile"
+      },
+      "frames": [
+        {
+          "no": "00",
+          "pc": 419384,
+          "binary": "/system/lib/libc.so",
+          "rest": " (ifree+219)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "01",
+          "pc": 420327,
+          "binary": "/system/lib/libc.so",
+          "rest": " (je_free+74)",
+          "buildId": null,
+          "runtimeType": "android"
+        },
+        {
+          "no": "02",
+          "pc": 3800135,
+          "binary": "/data/app/com.example.macrobenchmarks-1/lib/arm/libflutter.so",
+          "rest": " (offset 0x508000)",
+          "buildId": null,
+          "runtimeType": "android"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": 7
+    },
+    "engineBuild": {
+      "engineHash": "014da89eb01520ab7bbeba9971f852488ee80eaf",
+      "variant": {
+        "os": "android",
+        "arch": "arm",
+        "mode": "profile"
+      }
+    },
+    "symbolized": "#00 00066638 /system/lib/libc.so (ifree+219)\n#01 000669e7 /system/lib/libc.so (je_free+74)\n#02 0039fc47 <...>/lib/arm/libflutter.so (offset 0x508000)\n                                         dart::TimelineEventArguments::Free()\n                                         third_party/dart/runtime/vm/timeline.cc:386:3\n                                         dart::TimelineEvent::Init(dart::TimelineEvent::EventType, char const*)\n                                         third_party/dart/runtime/vm/timeline.cc:581:14\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test19.input.txt b/github-label-notifier/symbolizer/test/data/test19.input.txt
new file mode 100644
index 0000000..2865e35
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test19.input.txt
@@ -0,0 +1,36 @@
+@flutter-symbolizer-bot flutter#bbc0161 profile
+
+tdout:            11-09 15:27:57.618 D/ActivityManager( 1462): cleanUpApplicationRecord -- 14311
+2020-11-09T15:32:20.230036: stdout: [  +19 ms] executing: /home/flutter/.cocoon/flutter/bin/cache/dart-sdk/bin/dart pub run test test_driver/multi_widget_construction_perf_test.dart -rexpanded
+2020-11-09T15:32:33.378428: stdout: [+13148 ms] 00:00 �[32m+0�[0m: multi_widget_construction_perf�[0m
+2020-11-09T15:32:33.409464: stderr: [  +31 ms] VMServiceFlutterDriver: Connecting to Flutter application at http://127.0.0.1:35015/D39pZt4yXxM=/
+2020-11-09T15:32:33.554340: stderr: [ +144 ms] VMServiceFlutterDriver: Isolate found with number: 3413807003351991
+2020-11-09T15:32:33.662966: stderr: [ +108 ms] VMServiceFlutterDriver: Isolate is paused at start.
+2020-11-09T15:32:33.663920: stderr: [   +1 ms] VMServiceFlutterDriver: Attempting to resume isolate
+2020-11-09T15:32:35.900610: stderr: [+2236 ms] VMServiceFlutterDriver: Connected to Flutter application.
+2020-11-09T15:32:41.572089: stdout: [+5672 ms] F/libc    (14836): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xfffffffc in tid 14854 (1.raster)
+2020-11-09T15:32:41.678820: stdout: [ +106 ms] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+2020-11-09T15:32:41.679115: stdout: [        ] Build fingerprint: 'motorola/athene/athene:7.0/NPJS25.93-14.7-8/6:user/release-keys'
+2020-11-09T15:32:41.679498: stdout: [        ] Revision: 'p2a0'
+2020-11-09T15:32:41.680057: stdout: [        ] ABI: 'arm'
+2020-11-09T15:32:41.680357: stdout: [        ] pid: 14836, tid: 14854, name: 1.raster  >>> com.example.macrobenchmarks <<<
+2020-11-09T15:32:41.680724: stdout: [        ] signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xfffffffc
+2020-11-09T15:32:41.681146: stdout: [        ]     r0 ffffffff  r1 00000000  r2 00000000  r3 00000000
+2020-11-09T15:32:41.681682: stdout: [        ]     r4 a2056000  r5 8dc3d8f1  r6 a20574d0  r7 000000dc
+2020-11-09T15:32:41.682121: stdout: [        ]     r8 a54af288  r9 00000000  sl 8dba2048  fp 8dc3d8f1
+2020-11-09T15:32:41.682474: stdout: [        ]     ip aef56628  sp 94bf5fd8  lr aef3d309  pc aef35638  cpsr 80070030
+2020-11-09T15:32:41.685668: stdout: [   +2 ms] backtrace:
+2020-11-09T15:32:41.686361: stdout: [        ]     #00 pc 00066638  /system/lib/libc.so (ifree+219)
+2020-11-09T15:32:41.687106: stdout: [        ]     #01 pc 000669e7  /system/lib/libc.so (je_free+74)
+stdout: [        ]     #02 pc 0039fc47  /data/app/com.example.macrobenchmarks-1/lib/arm/libflutter.so (offset 0x508000)
+2020-11-09T15:32:43.070687: stdout: [+1383 ms] 00:09 �[32m+0�[0m�[31m -1�[0m: multi_widget_construction_perf �[1m�[31m[E]�[0m�[0m
+2020-11-09T15:32:43.076963: stdout: [   +6 ms]   DriverError: Failed to start tracing due to remote error
+2020-11-09T15:32:43.077338: stdout: [        ]   Original error: setVMTimelineFlags: (-32000) Bad state: The client closed with pending request "setVMTimelineFlags".
+2020-11-09T15:32:43.077641: stdout: [        ]   Original stack trace:
+stdout: [        ]   dart:async/future_impl.dart 23:44                               _Completer.completeError
+2020-11-09T15:32:43.077890: stdout: [        ]   package:vm_service/src/vm_service.dart 2050:17                  VmService._processResponse
+stdout: [        ]   package:vm_service/src/vm_service.dart 2037:7                   VmService._processMessageStr
+2020-11-09T15:32:43.078081: stdout: [        ]   package:vm_service/src/vm_service.dart 1988:7                   VmService._processMessage
+2020-11-09T15:32:43.078296: stdout: [        ]   package:stack_trace/src/stack_zone_specification.dart 126:26    StackZoneSpecification._registerUnaryCallback.<fn>.<fn>
+stdout: [        ]   package:stack_trace/src/stack_zone_specification.dart 208:15    StackZoneSpecification._run
+2020-11-09T15:32:43.078472: stdout: [        ]   package:stack_trace/src/stack_zone_specification.dart 126:14
diff --git a/github-label-notifier/symbolizer/test/data/test20.expected.github.txt b/github-label-notifier/symbolizer/test/data/test20.expected.github.txt
new file mode 100644
index 0000000..ad4603a
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test20.expected.github.txt
@@ -0,0 +1,57 @@
+crash from null symbolized using symbols for `a1440ca392ca23e874a105c5f3248b495bd0e247` `ios-arm64-release`
+```
+#00 00000001df39c72c libsystem_kernel.dylib __psynch_cvwait + 8
+#01 00000001f9f83330 libsystem_pthread.dylib _pthread_cond_wait$VARIANT$mp + 1180
+#02 00000001c88cee0c libc++.1.dylib std::__1::condition_variable::wait+ 52748 (std::__1::unique_lock<std::__1::mutex>&) + 24
+#03 0000000101154814 Flutter 0x101118000 + 247828
+                             fml::AutoResetWaitableEvent::Wait()
+                             flutter/fml/synchronization/waitable_event.cc:75:9
+#04 000000010141ea7c Flutter 0x101118000 + 3172988
+                             flutter::Shell::OnPlatformViewDestroyed()
+                             flutter/shell/common/shell.cc:804:9
+#05 000000010113a674 Flutter 0x101118000 + 140916
+                             -[FlutterViewController surfaceUpdated:]
+                             flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm:581:35
+#06 000000010113b000 Flutter 0x101118000 + 143360
+                             -[FlutterViewController applicationWillResignActive:]
+                             flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm:701:3
+#07 00000001b4ef9098 CoreFoundation __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
+#08 00000001b4ef9058 CoreFoundation ___CFXRegistrationPost_block_invoke + 48
+#09 00000001b4ef8650 CoreFoundation _CFXRegistrationPost + 400
+#10 00000001b4ef8048 CoreFoundation _CFXNotificationPost + 696
+#11 00000001b611bb20 Foundation -[NSNotificationCenter postNotificationName:object:userInfo:] + 60
+#12 00000001b77d373c UIKitCore -[UIApplication _deactivateForReason:notify:] + 1540
+#13 00000001b6ebac0c UIKitCore -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 260
+#14 00000001b6ebb004 UIKitCore -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 740
+#15 00000001b6eba8c0 UIKitCore -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 336
+#16 00000001b6ec2460 UIKitCore __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 188
+#17 00000001b72f73a8 UIKitCore +[BSAnimationSettings+ 6554536 (UIKit) tryAnimatingWithSettings:actions:completion:] + 812
+#18 00000001b73f5458 UIKitCore _UISceneSettingsDiffActionPerformChangesWithTransitionContext + 244
+#19 00000001b6ec21f8 UIKitCore -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 348
+#20 00000001b6d04390 UIKitCore __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 772
+#21 00000001b6d02e30 UIKitCore -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 248
+#22 00000001b6d03fdc UIKitCore -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 220
+#23 00000001b731e08c UIKitCore -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 464
+#24 00000001c384d4a0 FrontBoardServices -[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:] + 456
+#25 00000001c3875cdc FrontBoardServices __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke_2 + 124
+#26 00000001c385a400 FrontBoardServices -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 232
+#27 00000001c3875c28 FrontBoardServices __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke + 368
+#28 00000001b4bcf280 libdispatch.dylib _dispatch_client_callout + 16
+#29 00000001b4b74b0c libdispatch.dylib _dispatch_block_invoke_direct$VARIANT$mp + 224
+#30 00000001c38994a8 FrontBoardServices __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 40
+#31 00000001c3899170 FrontBoardServices -[FBSSerialQueue _targetQueue_performNextIfPossible] + 404
+#32 00000001c3899644 FrontBoardServices -[FBSSerialQueue _performNextFromRunLoopSource] + 28
+#33 00000001b4f16240 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
+#34 00000001b4f16140 CoreFoundation __CFRunLoopDoSource0 + 204
+#35 00000001b4f15488 CoreFoundation __CFRunLoopDoSources0 + 256
+#36 00000001b4f0fa40 CoreFoundation __CFRunLoopRun + 776
+#37 00000001b4f0f200 CoreFoundation CFRunLoopRunSpecific + 572
+#38 00000001cb08c598 GraphicsServices GSEventRunModal + 160
+#39 00000001b77d8bcc UIKitCore -[UIApplication _run] + 1052
+#40 00000001b77de1a0 UIKitCore UIApplicationMain + 164
+#41 0000000100d5de84 Runner main + 24196 (AppDelegate.swift:)
+#42 00000001b4bee588 libdyld.dylib start + 4
+
+```
+
+<!-- {"symbolized":[1001]} -->
diff --git a/github-label-notifier/symbolizer/test/data/test20.expected.txt b/github-label-notifier/symbolizer/test/data/test20.expected.txt
new file mode 100644
index 0000000..6b4694f
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test20.expected.txt
@@ -0,0 +1,412 @@
+[
+  {
+    "crash": {
+      "engineVariant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      },
+      "frames": [
+        {
+          "no": "0",
+          "binary": "libsystem_kernel.dylib",
+          "pc": 8040073004,
+          "symbol": "__psynch_cvwait",
+          "offset": 8,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "1",
+          "binary": "libsystem_pthread.dylib",
+          "pc": 8488760112,
+          "symbol": "_pthread_cond_wait$VARIANT$mp",
+          "offset": 1180,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "2",
+          "binary": "libc++.1.dylib",
+          "pc": 7659646476,
+          "symbol": "std::__1::condition_variable::wait+ 52748 (std::__1::unique_lock<std::__1::mutex>&)",
+          "offset": 24,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "3",
+          "binary": "Flutter",
+          "pc": 4313139220,
+          "symbol": "0x101118000",
+          "offset": 247828,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "4",
+          "binary": "Flutter",
+          "pc": 4316064380,
+          "symbol": "0x101118000",
+          "offset": 3172988,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "5",
+          "binary": "Flutter",
+          "pc": 4313032308,
+          "symbol": "0x101118000",
+          "offset": 140916,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "6",
+          "binary": "Flutter",
+          "pc": 4313034752,
+          "symbol": "0x101118000",
+          "offset": 143360,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "7",
+          "binary": "CoreFoundation",
+          "pc": 7330566296,
+          "symbol": "__CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__",
+          "offset": 20,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "8",
+          "binary": "CoreFoundation",
+          "pc": 7330566232,
+          "symbol": "___CFXRegistrationPost_block_invoke",
+          "offset": 48,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "9",
+          "binary": "CoreFoundation",
+          "pc": 7330563664,
+          "symbol": "_CFXRegistrationPost",
+          "offset": 400,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "10",
+          "binary": "CoreFoundation",
+          "pc": 7330562120,
+          "symbol": "_CFXNotificationPost",
+          "offset": 696,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "11",
+          "binary": "Foundation",
+          "pc": 7349582624,
+          "symbol": "-[NSNotificationCenter postNotificationName:object:userInfo:]",
+          "offset": 60,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "12",
+          "binary": "UIKitCore",
+          "pc": 7373403964,
+          "symbol": "-[UIApplication _deactivateForReason:notify:]",
+          "offset": 1540,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "13",
+          "binary": "UIKitCore",
+          "pc": 7363865612,
+          "symbol": "-[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:]",
+          "offset": 260,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "14",
+          "binary": "UIKitCore",
+          "pc": 7363866628,
+          "symbol": "-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]",
+          "offset": 740,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "15",
+          "binary": "UIKitCore",
+          "pc": 7363864768,
+          "symbol": "-[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:]",
+          "offset": 336,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "16",
+          "binary": "UIKitCore",
+          "pc": 7363896416,
+          "symbol": "__186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke",
+          "offset": 188,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "17",
+          "binary": "UIKitCore",
+          "pc": 7368307624,
+          "symbol": "+[BSAnimationSettings+ 6554536 (UIKit) tryAnimatingWithSettings:actions:completion:]",
+          "offset": 812,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "18",
+          "binary": "UIKitCore",
+          "pc": 7369348184,
+          "symbol": "_UISceneSettingsDiffActionPerformChangesWithTransitionContext",
+          "offset": 244,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "19",
+          "binary": "UIKitCore",
+          "pc": 7363895800,
+          "symbol": "-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]",
+          "offset": 348,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "20",
+          "binary": "UIKitCore",
+          "pc": 7362069392,
+          "symbol": "__64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke",
+          "offset": 772,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "21",
+          "binary": "UIKitCore",
+          "pc": 7362063920,
+          "symbol": "-[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:]",
+          "offset": 248,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "22",
+          "binary": "UIKitCore",
+          "pc": 7362068444,
+          "symbol": "-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]",
+          "offset": 220,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "23",
+          "binary": "UIKitCore",
+          "pc": 7368466572,
+          "symbol": "-[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:]",
+          "offset": 464,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "24",
+          "binary": "FrontBoardServices",
+          "pc": 7575229600,
+          "symbol": "-[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:]",
+          "offset": 456,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "25",
+          "binary": "FrontBoardServices",
+          "pc": 7575395548,
+          "symbol": "__94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke_2",
+          "offset": 124,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "26",
+          "binary": "FrontBoardServices",
+          "pc": 7575282688,
+          "symbol": "-[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:]",
+          "offset": 232,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "27",
+          "binary": "FrontBoardServices",
+          "pc": 7575395368,
+          "symbol": "__94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke",
+          "offset": 368,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "28",
+          "binary": "libdispatch.dylib",
+          "pc": 7327249024,
+          "symbol": "_dispatch_client_callout",
+          "offset": 16,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "29",
+          "binary": "libdispatch.dylib",
+          "pc": 7326878476,
+          "symbol": "_dispatch_block_invoke_direct$VARIANT$mp",
+          "offset": 224,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "30",
+          "binary": "FrontBoardServices",
+          "pc": 7575540904,
+          "symbol": "__FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__",
+          "offset": 40,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "31",
+          "binary": "FrontBoardServices",
+          "pc": 7575540080,
+          "symbol": "-[FBSSerialQueue _targetQueue_performNextIfPossible]",
+          "offset": 404,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "32",
+          "binary": "FrontBoardServices",
+          "pc": 7575541316,
+          "symbol": "-[FBSSerialQueue _performNextFromRunLoopSource]",
+          "offset": 28,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "33",
+          "binary": "CoreFoundation",
+          "pc": 7330685504,
+          "symbol": "__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__",
+          "offset": 24,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "34",
+          "binary": "CoreFoundation",
+          "pc": 7330685248,
+          "symbol": "__CFRunLoopDoSource0",
+          "offset": 204,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "35",
+          "binary": "CoreFoundation",
+          "pc": 7330681992,
+          "symbol": "__CFRunLoopDoSources0",
+          "offset": 256,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "36",
+          "binary": "CoreFoundation",
+          "pc": 7330658880,
+          "symbol": "__CFRunLoopRun",
+          "offset": 776,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "37",
+          "binary": "CoreFoundation",
+          "pc": 7330656768,
+          "symbol": "CFRunLoopRunSpecific",
+          "offset": 572,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "38",
+          "binary": "GraphicsServices",
+          "pc": 7701317016,
+          "symbol": "GSEventRunModal",
+          "offset": 160,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "39",
+          "binary": "UIKitCore",
+          "pc": 7373425612,
+          "symbol": "-[UIApplication _run]",
+          "offset": 1052,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "40",
+          "binary": "UIKitCore",
+          "pc": 7373447584,
+          "symbol": "UIApplicationMain",
+          "offset": 164,
+          "location": "",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "41",
+          "binary": "Runner",
+          "pc": 4308983428,
+          "symbol": "main",
+          "offset": 24196,
+          "location": "AppDelegate.swift:",
+          "runtimeType": "ios"
+        },
+        {
+          "no": "42",
+          "binary": "libdyld.dylib",
+          "pc": 7327376776,
+          "symbol": "start",
+          "offset": 4,
+          "location": "",
+          "runtimeType": "ios"
+        }
+      ],
+      "format": "native",
+      "androidMajorVersion": null
+    },
+    "engineBuild": {
+      "engineHash": "a1440ca392ca23e874a105c5f3248b495bd0e247",
+      "variant": {
+        "os": "ios",
+        "arch": "arm64",
+        "mode": "release"
+      }
+    },
+    "symbolized": "#00 00000001df39c72c libsystem_kernel.dylib __psynch_cvwait + 8\n#01 00000001f9f83330 libsystem_pthread.dylib _pthread_cond_wait$VARIANT$mp + 1180\n#02 00000001c88cee0c libc++.1.dylib std::__1::condition_variable::wait+ 52748 (std::__1::unique_lock<std::__1::mutex>&) + 24\n#03 0000000101154814 Flutter 0x101118000 + 247828\n                             fml::AutoResetWaitableEvent::Wait()\n                             flutter/fml/synchronization/waitable_event.cc:75:9\n#04 000000010141ea7c Flutter 0x101118000 + 3172988\n                             flutter::Shell::OnPlatformViewDestroyed()\n                             flutter/shell/common/shell.cc:804:9\n#05 000000010113a674 Flutter 0x101118000 + 140916\n                             -[FlutterViewController surfaceUpdated:]\n                             flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm:581:35\n#06 000000010113b000 Flutter 0x101118000 + 143360\n                             -[FlutterViewController applicationWillResignActive:]\n                             flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm:701:3\n#07 00000001b4ef9098 CoreFoundation __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20\n#08 00000001b4ef9058 CoreFoundation ___CFXRegistrationPost_block_invoke + 48\n#09 00000001b4ef8650 CoreFoundation _CFXRegistrationPost + 400\n#10 00000001b4ef8048 CoreFoundation _CFXNotificationPost + 696\n#11 00000001b611bb20 Foundation -[NSNotificationCenter postNotificationName:object:userInfo:] + 60\n#12 00000001b77d373c UIKitCore -[UIApplication _deactivateForReason:notify:] + 1540\n#13 00000001b6ebac0c UIKitCore -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 260\n#14 00000001b6ebb004 UIKitCore -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 740\n#15 00000001b6eba8c0 UIKitCore -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 336\n#16 00000001b6ec2460 UIKitCore __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 188\n#17 00000001b72f73a8 UIKitCore +[BSAnimationSettings+ 6554536 (UIKit) tryAnimatingWithSettings:actions:completion:] + 812\n#18 00000001b73f5458 UIKitCore _UISceneSettingsDiffActionPerformChangesWithTransitionContext + 244\n#19 00000001b6ec21f8 UIKitCore -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 348\n#20 00000001b6d04390 UIKitCore __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 772\n#21 00000001b6d02e30 UIKitCore -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 248\n#22 00000001b6d03fdc UIKitCore -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 220\n#23 00000001b731e08c UIKitCore -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 464\n#24 00000001c384d4a0 FrontBoardServices -[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:] + 456\n#25 00000001c3875cdc FrontBoardServices __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke_2 + 124\n#26 00000001c385a400 FrontBoardServices -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 232\n#27 00000001c3875c28 FrontBoardServices __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke + 368\n#28 00000001b4bcf280 libdispatch.dylib _dispatch_client_callout + 16\n#29 00000001b4b74b0c libdispatch.dylib _dispatch_block_invoke_direct$VARIANT$mp + 224\n#30 00000001c38994a8 FrontBoardServices __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 40\n#31 00000001c3899170 FrontBoardServices -[FBSSerialQueue _targetQueue_performNextIfPossible] + 404\n#32 00000001c3899644 FrontBoardServices -[FBSSerialQueue _performNextFromRunLoopSource] + 28\n#33 00000001b4f16240 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24\n#34 00000001b4f16140 CoreFoundation __CFRunLoopDoSource0 + 204\n#35 00000001b4f15488 CoreFoundation __CFRunLoopDoSources0 + 256\n#36 00000001b4f0fa40 CoreFoundation __CFRunLoopRun + 776\n#37 00000001b4f0f200 CoreFoundation CFRunLoopRunSpecific + 572\n#38 00000001cb08c598 GraphicsServices GSEventRunModal + 160\n#39 00000001b77d8bcc UIKitCore -[UIApplication _run] + 1052\n#40 00000001b77de1a0 UIKitCore UIApplicationMain + 164\n#41 0000000100d5de84 Runner main + 24196 (AppDelegate.swift:)\n#42 00000001b4bee588 libdyld.dylib start + 4\n",
+    "notes": []
+  }
+]
\ No newline at end of file
diff --git a/github-label-notifier/symbolizer/test/data/test20.input.txt b/github-label-notifier/symbolizer/test/data/test20.input.txt
new file mode 100644
index 0000000..44777f8
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/data/test20.input.txt
@@ -0,0 +1,51 @@
+@flutter-symbolizer-bot this ios release flutter#1.22.3
+
+Incident Identifier: 21BAAC4A-459E-458B-A0F3-CE6CB3BD5665
+Code Type:           ARM-64 (Native)
+
+Thread 0 name:  Dispatch queue: com.apple.main-thread
+Thread 0 Crashed:
+0   libsystem_kernel.dylib            0x00000001df39c72c __psynch_cvwait + 8
+1   libsystem_pthread.dylib           0x00000001f9f83330 _pthread_cond_wait$VARIANT$mp + 1180
+2   libc++.1.dylib                    0x00000001c88cee0c std::__1::condition_variable::wait+ 52748 (std::__1::unique_lock<std::__1::mutex>&) + 24
+3   Flutter                           0x0000000101154814 0x101118000 + 247828
+4   Flutter                           0x000000010141ea7c 0x101118000 + 3172988
+5   Flutter                           0x000000010113a674 0x101118000 + 140916
+6   Flutter                           0x000000010113b000 0x101118000 + 143360
+7   CoreFoundation                    0x00000001b4ef9098 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
+8   CoreFoundation                    0x00000001b4ef9058 ___CFXRegistrationPost_block_invoke + 48
+9   CoreFoundation                    0x00000001b4ef8650 _CFXRegistrationPost + 400
+10  CoreFoundation                    0x00000001b4ef8048 _CFXNotificationPost + 696
+11  Foundation                        0x00000001b611bb20 -[NSNotificationCenter postNotificationName:object:userInfo:] + 60
+12  UIKitCore                         0x00000001b77d373c -[UIApplication _deactivateForReason:notify:] + 1540
+13  UIKitCore                         0x00000001b6ebac0c -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 260
+14  UIKitCore                         0x00000001b6ebb004 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 740
+15  UIKitCore                         0x00000001b6eba8c0 -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 336
+16  UIKitCore                         0x00000001b6ec2460 __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 188
+17  UIKitCore                         0x00000001b72f73a8 +[BSAnimationSettings+ 6554536 (UIKit) tryAnimatingWithSettings:actions:completion:] + 812
+18  UIKitCore                         0x00000001b73f5458 _UISceneSettingsDiffActionPerformChangesWithTransitionContext + 244
+19  UIKitCore                         0x00000001b6ec21f8 -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 348
+20  UIKitCore                         0x00000001b6d04390 __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 772
+21  UIKitCore                         0x00000001b6d02e30 -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 248
+22  UIKitCore                         0x00000001b6d03fdc -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 220
+23  UIKitCore                         0x00000001b731e08c -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 464
+24  FrontBoardServices                0x00000001c384d4a0 -[FBSScene updater:didUpdateSettings:withDiff:transitionContext:completion:] + 456
+25  FrontBoardServices                0x00000001c3875cdc __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke_2 + 124
+26  FrontBoardServices                0x00000001c385a400 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 232
+27  FrontBoardServices                0x00000001c3875c28 __94-[FBSWorkspaceScenesClient _queue_updateScene:withSettings:diff:transitionContext:completion:]_block_invoke + 368
+28  libdispatch.dylib                 0x00000001b4bcf280 _dispatch_client_callout + 16
+29  libdispatch.dylib                 0x00000001b4b74b0c _dispatch_block_invoke_direct$VARIANT$mp + 224
+30  FrontBoardServices                0x00000001c38994a8 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 40
+31  FrontBoardServices                0x00000001c3899170 -[FBSSerialQueue _targetQueue_performNextIfPossible] + 404
+32  FrontBoardServices                0x00000001c3899644 -[FBSSerialQueue _performNextFromRunLoopSource] + 28
+33  CoreFoundation                    0x00000001b4f16240 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
+34  CoreFoundation                    0x00000001b4f16140 __CFRunLoopDoSource0 + 204
+35  CoreFoundation                    0x00000001b4f15488 __CFRunLoopDoSources0 + 256
+36  CoreFoundation                    0x00000001b4f0fa40 __CFRunLoopRun + 776
+37  CoreFoundation                    0x00000001b4f0f200 CFRunLoopRunSpecific + 572
+38  GraphicsServices                  0x00000001cb08c598 GSEventRunModal + 160
+39  UIKitCore                         0x00000001b77d8bcc -[UIApplication _run] + 1052
+40  UIKitCore                         0x00000001b77de1a0 UIApplicationMain + 164
+41  Runner                            0x0000000100d5de84 main + 24196 (AppDelegate.swift:5)
+42  libdyld.dylib                     0x00000001b4bee588 start + 4
+
diff --git a/github-label-notifier/symbolizer/test/symbolizer_test.dart b/github-label-notifier/symbolizer/test/symbolizer_test.dart
new file mode 100644
index 0000000..dc6f08b
--- /dev/null
+++ b/github-label-notifier/symbolizer/test/symbolizer_test.dart
@@ -0,0 +1,254 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:github/github.dart';
+import 'package:mockito/mockito.dart';
+import 'package:path/path.dart' as p;
+import 'package:symbolizer/bot.dart';
+import 'package:symbolizer/config.dart';
+import 'package:symbolizer/model.dart';
+import 'package:symbolizer/ndk.dart';
+import 'package:symbolizer/symbols.dart';
+import 'package:test/test.dart';
+
+import 'package:symbolizer/symbolizer.dart';
+
+class MockSymbolsCache extends Mock implements SymbolsCache {}
+
+class MockGitHub extends Mock implements GitHub {}
+
+class MockNdk extends Mock implements Ndk {}
+
+class MockRepositoriesService extends Mock implements RepositoriesService {}
+
+class MockRepositoryCommit extends Mock implements RepositoryCommit {}
+
+final regenerateExpectations =
+    bool.fromEnvironment('REGENERATE_EXPECTATIONS') ||
+        Platform.environment['REGENERATE_EXPECTATIONS'] == 'true';
+
+final config = loadConfigFromFile();
+
+void main() {
+  group('end-to-end', () {
+    Symbolizer symbolizer;
+    final files = Directory('test/data').listSync();
+
+    setUpAll(() {
+      final ndk = Ndk();
+      final symbols = SymbolsCache(path: 'symbols-cache', ndk: ndk);
+      final github = GitHub(auth: Authentication.withToken(config.githubToken));
+      symbolizer = Symbolizer(symbols: symbols, ndk: ndk, github: github);
+    });
+
+    for (var inputFile in files
+        .where((f) => p.basename(f.path).endsWith('.input.txt'))
+        .cast<File>()) {
+      final testName = p.basename(inputFile.path).split('.').first;
+      final expectationFile = File('test/data/$testName.expected.txt');
+      test(testName, () async {
+        final input = await inputFile.readAsString();
+        final overrides = Bot.parseCommand(0, input)?.overrides;
+        final result = await symbolizer.symbolize(input, overrides: overrides);
+        final roundTrip = (jsonDecode(jsonEncode(result)) as List)
+            .cast<Map<String, dynamic>>()
+            .map($SymbolizationResult.fromJson);
+        expect(result, equals(roundTrip));
+        if (regenerateExpectations) {
+          await expectationFile.writeAsString(
+              const JsonEncoder.withIndent('  ').convert(result));
+        } else {
+          final expected =
+              (jsonDecode(await expectationFile.readAsString()) as List)
+                  .map((e) => SymbolizationResult.fromJson(e))
+                  .toList();
+
+          expect(result, equals(expected));
+        }
+      });
+    }
+
+    tearDownAll(() {
+      symbolizer.github.dispose();
+    });
+  });
+
+  test('nothing to symbolize', () async {
+    final symbols = MockSymbolsCache();
+    final ndk = MockNdk();
+    final github = MockGitHub();
+    final symbolizer = Symbolizer(github: github, ndk: ndk, symbols: symbols);
+
+    expect(
+        await symbolizer
+            .symbolize('''This is test which does not contain anything'''),
+        isEmpty);
+  });
+
+  group('android crash', () {
+    test('no engine hash', () async {
+      final symbols = MockSymbolsCache();
+      final ndk = MockNdk();
+      final github = MockGitHub();
+      final symbolizer = Symbolizer(github: github, ndk: ndk, symbols: symbols);
+
+      final results = await symbolizer.symbolize('''
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+backtrace:
+      #00 pc 0000000000111111  libflutter.so (BuildId: aaaabbbbccccddddaaaabbbbccccdddd)
+      #01 pc 0000000000222222  else-else
+''');
+      expect(results.length, equals(1));
+      expect(results.first.crash.engineVariant,
+          equals(EngineVariant(os: 'android', arch: null, mode: null)));
+      expect(results.first.notes.map((note) => note.kind),
+          equals([SymbolizationNoteKind.unknownEngineHash]));
+    });
+
+    test('no abi', () async {
+      final symbols = MockSymbolsCache();
+      final ndk = MockNdk();
+      final github = MockGitHub();
+      final symbolizer = Symbolizer(github: github, ndk: ndk, symbols: symbols);
+
+      final repositories = MockRepositoriesService();
+      final commit = MockRepositoryCommit();
+
+      when(commit.sha).thenReturn('abcdef123456');
+      when(repositories.getCommit(
+              RepositorySlug('flutter', 'engine'), 'abcdef'))
+          .thenAnswer((_) async => commit);
+      when(github.repositories).thenReturn(repositories);
+
+      final results = await symbolizer.symbolize('''
+• Engine revision abcdef
+
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+backtrace:
+      #00 pc 0000000000111111  libflutter.so (BuildId: aaaabbbbccccddddaaaabbbbccccdddd)
+      #01 pc 0000000000222222  else-else
+''');
+      expect(results.length, equals(1));
+      expect(results.first.crash.engineVariant,
+          equals(EngineVariant(os: 'android', arch: null, mode: null)));
+      expect(results.first.notes.map((note) => note.kind),
+          equals([SymbolizationNoteKind.unknownAbi]));
+    });
+
+    test('illegal abi', () async {
+      final symbols = MockSymbolsCache();
+      final ndk = MockNdk();
+      final github = MockGitHub();
+      final symbolizer = Symbolizer(github: github, ndk: ndk, symbols: symbols);
+
+      final repositories = MockRepositoriesService();
+      final commit = MockRepositoryCommit();
+
+      when(commit.sha).thenReturn('abcdef123456');
+      when(repositories.getCommit(
+              RepositorySlug('flutter', 'engine'), 'abcdef'))
+          .thenAnswer((_) async => commit);
+      when(github.repositories).thenReturn(repositories);
+
+      final results = await symbolizer.symbolize('''
+• Engine revision abcdef
+
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+ABI: 'something'
+backtrace:
+      #00 pc 0000000000111111  libflutter.so (BuildId: aaaabbbbccccddddaaaabbbbccccdddd)
+      #01 pc 0000000000222222  else-else
+''');
+      expect(results.length, equals(1));
+      expect(results.first.crash.engineVariant,
+          equals(EngineVariant(os: 'android', arch: null, mode: null)));
+      expect(results.first.notes.map((note) => note.kind),
+          equals([SymbolizationNoteKind.unknownAbi]));
+    });
+
+    test('symbolize', () async {
+      final symbols = MockSymbolsCache();
+      final ndk = MockNdk();
+      final github = MockGitHub();
+      final symbolizer = Symbolizer(github: github, ndk: ndk, symbols: symbols);
+
+      final repositories = MockRepositoriesService();
+      final commit = MockRepositoryCommit();
+
+      when(commit.sha).thenReturn('abcdef123456');
+      when(repositories.getCommit(
+              RepositorySlug('flutter', 'engine'), 'abcdef'))
+          .thenAnswer((_) async => commit);
+      when(github.repositories).thenReturn(repositories);
+
+      final releaseBuild = EngineBuild(
+          engineHash: 'abcdef123456',
+          variant:
+              EngineVariant(os: 'android', arch: 'arm64', mode: 'release'));
+
+      when(symbols.findVariantByBuildId(
+              engineHash: 'abcdef123456',
+              variant: EngineVariant(os: 'android', arch: 'arm64', mode: null),
+              buildId: 'aaaabbbbccccddddaaaabbbbccccdddd'))
+          .thenAnswer((x) async {
+        return releaseBuild;
+      });
+
+      when(symbols.get(releaseBuild)).thenAnswer(
+          (_) async => '/engines/abcdef123456/android-arm64-release');
+
+      when(ndk.getBuildId(
+              '/engines/abcdef123456/android-arm64-release/libflutter.so'))
+          .thenAnswer((_) async => 'aaaabbbbccccddddaaaabbbbccccdddd');
+
+      when(ndk.getTextSectionInfo(
+              '/engines/abcdef123456/android-arm64-release/libflutter.so'))
+          .thenAnswer((_) async => SectionInfo(
+              fileOffset: 0x12340, fileSize: 0x2000, virtualAddress: 0x13340));
+
+      final backtrace = '''
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+ABI: 'arm64'
+backtrace:
+      #00 pc 0000000000111111  libflutter.so (BuildId: aaaabbbbccccddddaaaabbbbccccdddd)
+      #01 pc 0000000000222222  else-else''';
+
+      when(ndk.symbolize(
+          object: '/engines/abcdef123456/android-arm64-release/libflutter.so',
+          arch: 'arm64',
+          addresses: [
+            '0x124111' // Adjusted by load bias.
+          ])).thenAnswer(
+          (_) async => ['some-function\nthird_party/something/else.cc']);
+
+      final results = await symbolizer.symbolize('''
+• Engine revision abcdef
+
+$backtrace
+''');
+
+      expect(results.length, equals(1));
+      expect(results.first.crash.engineVariant,
+          equals(EngineVariant(os: 'android', arch: 'arm64', mode: null)));
+      expect(
+          results.first.crash.frames.first,
+          equals(AndroidCrashFrame(
+              no: '00',
+              pc: 0x111111,
+              binary: 'libflutter.so',
+              rest: ' (BuildId: aaaabbbbccccddddaaaabbbbccccdddd)',
+              buildId: 'aaaabbbbccccddddaaaabbbbccccdddd')));
+      expect(results.first.engineBuild, equals(releaseBuild));
+      expect(results.first.notes, isEmpty);
+      expect(results.first.symbolized.trim(), equals('''
+#00 0000000000111111 libflutter.so (BuildId: aaaabbbbccccddddaaaabbbbccccdddd)
+                                   some-function
+                                   third_party/something/else.cc
+#01 0000000000222222 else-else'''));
+    });
+  });
+}