Git Product home page Git Product logo

Comments (12)

larryaasen avatar larryaasen commented on June 23, 2024 3

@khaledSayedAbdellah There seems to be a bug in the Apple App Store listing for this app where the term version is included in the version string like this: version 19.0.1.
See this screenshot:
Screen Shot 2022-11-16 at 10 39 26 PM
https://apps.apple.com/us/app/mainpro-%D9%85%D8%A7%D9%8A%D9%86-%D8%A8%D8%B1%D9%88/id1582292480?uo=4

from upgrader.

larryaasen avatar larryaasen commented on June 23, 2024 1

I just published an update to upgrader v0.6.0 that should handle this version string. Since that version string is not a valid semantic version, it will be ignored.

from upgrader.

tiagohbalves avatar tiagohbalves commented on June 23, 2024 1

I'm facing the same problem. I'm using simulator iPhone 12 Pro max - iOS 14.5.
This is my log


flutter: upgrader: package info appName: Ligo
flutter: upgrader: package info version: 1.0.5
flutter: upgrader: countryCode: US
flutter: upgrader: blocked: false
flutter: upgrader: debugDisplayAlways: false
flutter: upgrader: debugDisplayOnce: false
flutter: upgrader: hasAlerted: false
flutter: upgrader: appStoreVersion: 1.0.8
flutter: upgrader: installedVersion: 1.0.5
flutter: upgrader: minAppVersion: null
flutter: The following FormatException was thrown building FutureBuilder<bool>(dirty, state:
flutter: _FutureBuilderState<bool>#5ff9e):
flutter: Not a properly formatted version string
flutter:
flutter: The relevant error-causing widget was:
flutter:   FutureBuilder<bool>
flutter:   file:///Users/tiagohbalves/flutter/.pub-cache/hosted/pub.dartlang.org/upgrader-2.8.3/lib/src/upgrade_alert.dart:60:12
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0      Version.parse (package:version/version.dart:172:7)
flutter: #1      Upgrader.isUpdateAvailable (package:upgrader/src/upgrader.dart:375:40)
flutter: #2      Upgrader.shouldDisplayUpgrade (package:upgrader/src/upgrader.dart:319:10)
flutter: #3      Upgrader.checkVersion (package:upgrader/src/upgrader.dart:279:29)
flutter: #4      UpgradeAlert.build.<anonymous closure> (package:upgrader/src/upgrade_alert.dart:64:24)
flutter: #5      _FutureBuilderState.build (package:flutter/src/widgets/async.dart:751:55)
flutter: #6      StatefulElement.build (package:flutter/src/widgets/framework.dart:4744:28)
flutter: #7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4627:15)
flutter: #8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
flutter: #9      Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
flutter: #10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
flutter: #11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
flutter: #12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
flutter: #13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
flutter: #14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
flutter: #15     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
flutter: #19     _invoke (dart:ui/hooks.dart:251:10)
flutter: #20     _drawFrame (dart:ui/hooks.dart:209:3)
flutter: (elided 3 frames from dart:async)
flutter:
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════

Upgrader version:
2.8.3

from upgrader.

ehsnaskri avatar ehsnaskri commented on June 23, 2024

I am still getting this error.

from upgrader.

svyazist2005 avatar svyazist2005 commented on June 23, 2024

I'm still getting this error on IOS
environment:
sdk: ">=2.1.0 <3.0.0"

dependencies:
upgrader: ^2.8.3

flutter: [2021-06-02 15:45:00.237040 | ConsoleHandler | INFO] ============================== CATCHER LOG ==============================
flutter: [2021-06-02 15:45:00.238442 | ConsoleHandler | INFO] Crash occured on 2021-06-02 15:45:00.230994
flutter: [2021-06-02 15:45:00.239356 | ConsoleHandler | INFO]
flutter: [2021-06-02 15:45:00.242177 | ConsoleHandler | INFO] ------- DEVICE INFO -------
flutter: [2021-06-02 15:45:00.245357 | ConsoleHandler | INFO] model: iPhone
flutter: [2021-06-02 15:45:00.246494 | ConsoleHandler | INFO] isPhysicalDevice: false
flutter: [2021-06-02 15:45:00.248929 | ConsoleHandler | INFO] name: iPhone SE (2nd generation)
flutter: [2021-06-02 15:45:00.252155 | ConsoleHandler | INFO] identifierForVendor: 9C3ACF81-1DDC-4631-91FB-A0FD87EE3ED2
flutter: [2021-06-02 15:45:00.255890 | ConsoleHandler | INFO] localizedModel: iPhone
flutter: [2021-06-02 15:45:00.259004 | ConsoleHandler | INFO] systemName: iOS
flutter: [2021-06-02 15:45:00.259937 | ConsoleHandler | INFO] utsnameVersion: Darwin Kernel Version 19.6.0: Tue Jan 12 22:13:05 PST 2021; root:xnu-6153.141.16~1/RELEASE_X86_64
flutter: [2021-06-02 15:45:00.261076 | ConsoleHandler | INFO] utsnameRelease: 19.6.0
flutter: [2021-06-02 15:45:00.261722 | ConsoleHandler | INFO] utsnameMachine: x86_64
flutter: [2021-06-02 15:45:00.262373 | ConsoleHandler | INFO] utsnameNodename: MacForFutures-MacBook-Pro.local
flutter: [2021-06-02 15:45:00.263864 | ConsoleHandler | INFO] utsnameSysname: Darwin
flutter: [2021-06-02 15:45:00.264847 | ConsoleHandler | INFO]
flutter: [2021-06-02 15:45:00.266948 | ConsoleHandler | INFO] ------- APP INFO -------
flutter: [2021-06-02 15:45:00.267622 | ConsoleHandler | INFO] environment: debug
flutter: [2021-06-02 15:45:00.268517 | ConsoleHandler | INFO] version: 2.0.7
flutter: [2021-06-02 15:45:00.269169 | ConsoleHandler | INFO] appName: null
flutter: [2021-06-02 15:45:00.270696 | ConsoleHandler | INFO] buildNumber: 29
flutter: [2021-06-02 15:45:00.273184 | ConsoleHandler | INFO] packageName: com.mixsport.app
flutter: [2021-06-02 15:45:00.273897 | ConsoleHandler | INFO]
flutter: [2021-06-02 15:45:00.275281 | ConsoleHandler | INFO] ---------- ERROR ----------
flutter: [2021-06-02 15:45:00.275838 | ConsoleHandler | INFO] FormatException: Not a properly formatted version string
flutter: [2021-06-02 15:45:00.276275 | ConsoleHandler | INFO]
flutter: [2021-06-02 15:45:00.278361 | ConsoleHandler | INFO] ------- STACK TRACE -------
flutter: [2021-06-02 15:45:00.279911 | ConsoleHandler | INFO] #0 Version.parse (package:version/version.dart:139:7)
flutter: [2021-06-02 15:45:00.281034 | ConsoleHandler | INFO] #1 Upgrader.isUpdateAvailable (package:upgrader/src/upgrader.dart:374:39)
flutter: [2021-06-02 15:45:00.282589 | ConsoleHandler | INFO] #2 Upgrader.shouldDisplayUpgrade (package:upgrader/src/upgrader.dart:319:10)
flutter: [2021-06-02 15:45:00.283273 | ConsoleHandler | INFO] #3 Upgrader.checkVersion (package:upgrader/src/upgrader.dart:279:29)
flutter: [2021-06-02 15:45:00.285031 | ConsoleHandler | INFO] #4 UpgradeAlert.build. (package:upgrader/src/upgrade_alert.dart:64:24)
flutter: [2021-06-02 15:45:00.285794 | ConsoleHandler | INFO] #5 _FutureBuilderState.build (package:flutter/src/widgets/async.dart:751:55)
flutter: [2021-06-02 15:45:00.286446 | ConsoleHandler | INFO] #6 StatefulElement.build (package:flutter/src/widgets/framework.dart:4744:28)
flutter: [2021-06-02 15:45:00.287200 | ConsoleHandler | INFO] #7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4627:15)
flutter: [2021-06-02 15:45:00.287819 | ConsoleHandler | INFO] #8 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
flutter: [2021-06-02 15:45:00.288177 | ConsoleHandler | INFO] #9 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
flutter: [2021-06-02 15:45:00.288610 | ConsoleHandler | INFO] #10 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
flutter: [2021-06-02 15:45:00.288862 | ConsoleHandler | INFO] #11 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
flutter: [2021-06-02 15:45:00.289234 | ConsoleHandler | INFO] #12 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
flutter: [2021-06-02 15:45:00.289605 | ConsoleHandler | INFO] #13 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
flutter: [2021-06-02 15:45:00.289960 | ConsoleHandler | INFO] #14 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
flutter: [2021-06-02 15:45:00.290369 | ConsoleHandler | INFO] #15 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
flutter: [2021-06-02 15:45:00.290804 | ConsoleHandler | INFO] #16 _rootRun (dart:async/zone.dart:1190:13)
flutter: [2021-06-02 15:45:00.291800 | ConsoleHandler | INFO] #17 _CustomZone.run (dart:async/zone.dart:1093:19)
flutter: [2021-06-02 15:45:00.292502 | ConsoleHandler | INFO] #18 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
flutter: [2021-06-02 15:45:00.293145 | ConsoleHandler | INFO] #19 _invoke (dart:ui/hooks.dart:251:10)
flutter: [2021-06-02 15:45:00.293551 | ConsoleHandler | INFO] #20 _drawFrame (dart:ui/hooks.dart:209:3)
flutter: [2021-06-02 15:45:00.293842 | ConsoleHandler | INFO]
flutter: [2021-06-02 15:45:00.294893 | ConsoleHandler | INFO] ==

from upgrader.

larryaasen avatar larryaasen commented on June 23, 2024

@svyazist2005 Can you enabled logging with this: debugLogging: true, and include the upgrader log here?

from upgrader.

svyazist2005 avatar svyazist2005 commented on June 23, 2024

@svyazist2005 Can you enabled logging with this: debugLogging: true, and include the upgrader log here?

It does does not differ much, anyway please check below:


Running Xcode build...
Xcode build done. 98.4s
Waiting for iPhone SE (2nd generation) to report its views... 5ms
Syncing files to device iPhone SE (2nd generation)...
flutter: [2021-06-04 19:17:50.364057 | Catcher | FINE] Using debug config

flutter: [2021-06-04 19:17:50.394683 | Catcher | FINE] Catcher configured successfully.

flutter: Orientation.portrait

flutter: 375.0

flutter: 667.0

flutter: 3.75

flutter: 6.67

flutter: upgrader: build UpgradeAlert

flutter: main page refresh

flutter: read key: launchedAtFirtsTime

flutter: ## reading authentication state

flutter: read Secure Storage

flutter: read Secure Storage

flutter: read Secure Storage

flutter: read key: locale

flutter: saved locale

flutter: uk

flutter: String

flutter: read key: notFirstLaunch

flutter: not first launch

flutter: upgrader: package info packageName: com.mixsport.app

flutter: upgrader: package info version: 2.0.7

flutter: upgrader: countryCode: US

flutter: read key: userName

flutter: read key: userId

flutter: ## not authenticated

flutter: checkConnection connected

flutter: fetchFavorites

flutter: getCityName(bloc).toUpperCase()

flutter:

flutter: getCityName(bloc).toUpperCase()

flutter:

flutter: connected
Syncing files to device iPhone SE (2nd generation)... 1,590ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on iPhone SE (2nd generation) is available at: http://127.0.0.1:61922/2L4tz5nC6Ws=/
flutter: [2021-06-04 19:17:56.334268 | Catcher | INFO] Setup localization lazily!
flutter: [2021-06-04 19:17:56.355864 | ConsoleHandler | INFO] ============================== CATCHER LOG ==============================
flutter: [2021-06-04 19:17:56.357943 | ConsoleHandler | INFO] Crash occured on 2021-06-04 19:17:56.340968
flutter: [2021-06-04 19:17:56.358746 | ConsoleHandler | INFO]
flutter: [2021-06-04 19:17:56.361113 | ConsoleHandler | INFO] ------- DEVICE INFO -------
flutter: [2021-06-04 19:17:56.370055 | ConsoleHandler | INFO] model: iPhone
flutter: [2021-06-04 19:17:56.371750 | ConsoleHandler | INFO] isPhysicalDevice: false
flutter: [2021-06-04 19:17:56.372520 | ConsoleHandler | INFO] name: iPhone SE (2nd generation)
flutter: [2021-06-04 19:17:56.373381 | ConsoleHandler | INFO] identifierForVendor: CA363EB6-EF7C-4E38-9447-C01EB1D5EAE7
flutter: [2021-06-04 19:17:56.376119 | ConsoleHandler | INFO] localizedModel: iPhone
flutter: [2021-06-04 19:17:56.378643 | ConsoleHandler | INFO] systemName: iOS
flutter: [2021-06-04 19:17:56.383082 | ConsoleHandler | INFO] utsnameVersion: Darwin Kernel Version 19.6.0: Tue Jan 12 22:13:05 PST 2021; root:xnu-6153.141.16~1/RELEASE_X86_64
flutter: [2021-06-04 19:17:56.384256 | ConsoleHandler | INFO] utsnameRelease: 19.6.0
flutter: [2021-06-04 19:17:56.385429 | ConsoleHandler | INFO] utsnameMachine: x86_64
flutter: [2021-06-04 19:17:56.386768 | ConsoleHandler | INFO] utsnameNodename: MacForFutures-MacBook-Pro.local
flutter: [2021-06-04 19:17:56.387813 | ConsoleHandler | INFO] utsnameSysname: Darwin
flutter: [2021-06-04 19:17:56.389431 | ConsoleHandler | INFO]
flutter: [2021-06-04 19:17:56.392555 | ConsoleHandler | INFO] ------- APP INFO -------
flutter: [2021-06-04 19:17:56.393960 | ConsoleHandler | INFO] environment: debug
flutter: [2021-06-04 19:17:56.394913 | ConsoleHandler | INFO] version: 2.0.7
flutter: [2021-06-04 19:17:56.395620 | ConsoleHandler | INFO] appName: null
flutter: [2021-06-04 19:17:56.396395 | ConsoleHandler | INFO] buildNumber: 29
flutter: [2021-06-04 19:17:56.397606 | ConsoleHandler | INFO] packageName: com.mixsport.app
flutter: [2021-06-04 19:17:56.399120 | ConsoleHandler | INFO]
flutter: [2021-06-04 19:17:56.401423 | ConsoleHandler | INFO] ---------- ERROR ----------
flutter: [2021-06-04 19:17:56.403335 | ConsoleHandler | INFO] FormatException: Not a properly formatted version string
flutter: [2021-06-04 19:17:56.404613 | ConsoleHandler | INFO]
flutter: [2021-06-04 19:17:56.407134 | ConsoleHandler | INFO] ------- STACK TRACE -------
flutter: [2021-06-04 19:17:56.408933 | ConsoleHandler | INFO] #0 Version.parse (package:version/version.dart:139:7)
flutter: [2021-06-04 19:17:56.411017 | ConsoleHandler | INFO] #1 Upgrader.isUpdateAvailable (package:upgrader/src/upgrader.dart:339:39)
flutter: [2021-06-04 19:17:56.412587 | ConsoleHandler | INFO] #2 Upgrader.shouldDisplayUpgrade (package:upgrader/src/upgrader.dart:292:10)
flutter: [2021-06-04 19:17:56.413408 | ConsoleHandler | INFO] #3 Upgrader.checkVersion (package:upgrader/src/upgrader.dart:265:11)
flutter: [2021-06-04 19:17:56.415837 | ConsoleHandler | INFO] #4 UpgradeAlert.build. (package:upgrader/src/upgrade_alert.dart:336:24)
flutter: [2021-06-04 19:17:56.416625 | ConsoleHandler | INFO] #5 _FutureBuilderState.build (package:flutter/src/widgets/async.dart:751:55)
flutter: [2021-06-04 19:17:56.417940 | ConsoleHandler | INFO] #6 StatefulElement.build (package:flutter/src/widgets/framework.dart:4744:28)
flutter: [2021-06-04 19:17:56.421153 | ConsoleHandler | INFO] #7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4627:15)
flutter: [2021-06-04 19:17:56.423116 | ConsoleHandler | INFO] #8 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
flutter: [2021-06-04 19:17:56.424419 | ConsoleHandler | INFO] #9 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
flutter: [2021-06-04 19:17:56.425239 | ConsoleHandler | INFO] #10 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
flutter: [2021-06-04 19:17:56.426094 | ConsoleHandler | INFO] #11 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
flutter: [2021-06-04 19:17:56.427079 | ConsoleHandler | INFO] #12 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
flutter: [2021-06-04 19:17:56.427692 | ConsoleHandler | INFO] #13 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
flutter: [2021-06-04 19:17:56.428298 | ConsoleHandler | INFO] #14 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
flutter: [2021-06-04 19:17:56.429428 | ConsoleHandler | INFO] #15 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
flutter: [2021-06-04 19:17:56.430292 | ConsoleHandler | INFO] #16 _rootRun (dart:async/zone.dart:1190:13)
flutter: [2021-06-04 19:17:56.431059 | ConsoleHandler | INFO] #17 _CustomZone.run (dart:async/zone.dart:1093:19)
flutter: [2021-06-04 19:17:56.432025 | ConsoleHandler | INFO] #18 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
flutter: [2021-06-04 19:17:56.433314 | ConsoleHandler | INFO] #19 _invoke (dart:ui/hooks.dart:251:10)
flutter: [2021-06-04 19:17:56.435786 | ConsoleHandler | INFO] #20 _drawFrame (dart:ui/hooks.dart:209:3)
flutter: [2021-06-04 19:17:56.437168 | ConsoleHandler | INFO]
flutter: [2021-06-04 19:17:56.439087 | ConsoleHandler | INFO] ======================================================================
flutter: [2021-06-04 19:17:56.504221 | Catcher | INFO] Report result: true

from upgrader.

larryaasen avatar larryaasen commented on June 23, 2024

@svyazist2005 The log is missing this line which was added in version 2.8.1:

upgrader: package info appName:

It would normally be between these lines like this:

upgrader: package info packageName: com.mixsport.app
upgrader: package info appName:
upgrader: package info version: 2.0.7

Please check your pubspec.yaml file for the version of upgrader you are using and list that here in a comment. Make sure you are using version 2.8.3 or later.

from upgrader.

svyazist2005 avatar svyazist2005 commented on June 23, 2024

@svyazist2005 The log is missing this line which was added in version 2.8.1:

upgrader: package info appName:

It would normally be between these lines like this:

upgrader: package info packageName: com.mixsport.app
upgrader: package info appName:
upgrader: package info version: 2.0.7

Please check your pubspec.yaml file for the version of upgrader you are using and list that here in a comment. Make sure you are using version 2.8.3 or later.

I'm using upgrader: ^2.8.3

from upgrader.

larryaasen avatar larryaasen commented on June 23, 2024

@svyazist2005 What does the pubspec.lock file say?

from upgrader.

larryaasen avatar larryaasen commented on June 23, 2024

@tiagohbalves According to the log above, it is crashing on this version: installedVersion: 1.0.5. Is there anything about the 1.0.5 version that could not be parsed by the Version package?

from upgrader.

khaledSayedAbdellah avatar khaledSayedAbdellah commented on June 23, 2024

still have the same issue at upgrader: ^4.11.1

upgrader: isUpdateAvailable: FormatException: Not a properly formatted version string

my log

flutter: upgrader: instantiated.
flutter: upgrader: build UpgradeAlert
flutter: upgrader: languageCode: ar
flutter: upgrader: default operatingSystem: ios Version 16.1 (Build 20B72)
flutter: upgrader: operatingSystem: ios
flutter: upgrader: platform: TargetPlatform.iOS
flutter: upgrader: isAndroid: false, isIOS: true, isLinux: false, isMacOS: false, isWindows: false, isFuchsia: false, isWeb: false
flutter: upgrader: package info packageName: Tawasl.Mrfixit
flutter: upgrader: package info appName: Main Pro
flutter: upgrader: package info version: 3.0.0
flutter: upgrader: countryCode: US
flutter: upgrader: languageCode: ar
flutter: upgrader: blocked: false
flutter: upgrader: debugDisplayAlways: false
flutter: upgrader: debugDisplayOnce: false
flutter: upgrader: hasAlerted: false
flutter: upgrader: appStoreVersion: version 19.0.1
flutter: upgrader: installedVersion: 3.0.0
flutter: upgrader: minAppVersion: null
flutter: upgrader: isUpdateAvailable: FormatException: Not a properly formatted version string
flutter: upgrader: isUpdateAvailable: false
flutter: upgrader: shouldDisplayUpgrade: false
flutter: upgrader: shouldDisplayReleaseNotes: true

any help

from upgrader.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.