@openzeppelin/upgrades-core 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/levenshtein.d.ts +4 -1
  2. package/dist/levenshtein.d.ts.map +1 -1
  3. package/dist/levenshtein.js +1 -1
  4. package/dist/levenshtein.js.map +1 -1
  5. package/dist/provider.d.ts.map +1 -1
  6. package/dist/provider.js +2 -0
  7. package/dist/provider.js.map +1 -1
  8. package/dist/storage/compare.d.ts +21 -3
  9. package/dist/storage/compare.d.ts.map +1 -1
  10. package/dist/storage/compare.js +80 -17
  11. package/dist/storage/compare.js.map +1 -1
  12. package/dist/storage/gap.d.ts +18 -0
  13. package/dist/storage/gap.d.ts.map +1 -0
  14. package/dist/storage/gap.js +29 -0
  15. package/dist/storage/gap.js.map +1 -0
  16. package/dist/storage/report-gap.test.d.ts +2 -0
  17. package/dist/storage/report-gap.test.d.ts.map +1 -0
  18. package/dist/storage/report-gap.test.js +106 -0
  19. package/dist/storage/report-gap.test.js.map +1 -0
  20. package/dist/storage/report-rename-retype.test.js +24 -0
  21. package/dist/storage/report-rename-retype.test.js.map +1 -1
  22. package/dist/storage/report.d.ts +1 -1
  23. package/dist/storage/report.d.ts.map +1 -1
  24. package/dist/storage/report.js +59 -10
  25. package/dist/storage/report.js.map +1 -1
  26. package/dist/storage.test.js +421 -2
  27. package/dist/storage.test.js.map +1 -1
  28. package/dist/validate/data.js +25 -5
  29. package/dist/validate/data.js.map +1 -1
  30. package/package.json +3 -3
  31. package/src/levenshtein.ts +4 -2
  32. package/src/provider.ts +2 -0
  33. package/src/storage/compare.ts +88 -18
  34. package/src/storage/gap.ts +26 -0
  35. package/src/storage/report-gap.test.ts +119 -0
  36. package/src/storage/report-gap.test.ts.md +59 -0
  37. package/src/storage/report-gap.test.ts.snap +0 -0
  38. package/src/storage/report-rename-retype.test.ts +27 -0
  39. package/src/storage/report-rename-retype.test.ts.md +7 -0
  40. package/src/storage/report-rename-retype.test.ts.snap +0 -0
  41. package/src/storage/report.test.ts.md +1 -4
  42. package/src/storage/report.test.ts.snap +0 -0
  43. package/src/storage/report.ts +83 -12
  44. package/src/storage.test.ts +466 -2
  45. package/src/storage.test.ts.snap +0 -0
  46. package/src/validate/data.ts +1 -1
  47. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +0 -160
@@ -1 +1 @@
1
- {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../src/storage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../src/storage.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAoC;AAEpC,8CAA6C;AAC7C,qCAAoC;AAGpC,yDAAqD;AACrD,uCAAoD;AACpD,6CAAgE;AAChE,+CAAyD;AACzD,6CAA0D;AAM1D,MAAM,IAAI,GAAG,aAAwB,CAAC;AAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;IACpB,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC;IACtF,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IACD,MAAM,UAAU,GAAe,SAAS,CAAC,MAAM,CAAC;IAChD,MAAM,SAAS,GAAuC,EAAE,CAAC;IACzD,MAAM,cAAc,GAAkC,EAAE,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,IAAA,eAAO,EAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,EAAE;QACrG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC1B,oEAAoE;QACpE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAc,CAAC;KACxG;IACD,MAAM,KAAK,GAAG,IAAA,kCAAe,EAAC,UAAU,CAAC,CAAC;IAC1C,CAAC,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CACtC,IAAA,8BAAoB,EAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;AAE1C,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;IACnB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;IACnB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAAE;IAChC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE;IACjC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE;IACjC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;QACjB,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR,QAAQ,EAAE,0BAA0B;gBACpC,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE;oBACJ,EAAE,EAAE,WAAW;iBAChB;aACF;SACF;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE;gBACR,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE;oBACJ,EAAE,EAAE,WAAW;iBAChB;gBACD,IAAI,EAAE,GAAG;aACV;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE;oBACJ,EAAE,EAAE,WAAW;iBAChB;gBACD,IAAI,EAAE,GAAG;aACV;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE;IAClC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;QACjB,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE;gBACR,QAAQ,EAAE,2BAA2B;gBACrC,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE;oBACJ,EAAE,EAAE,WAAW;iBAChB;aACF;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,2BAA2B;gBACrC,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE;oBACJ,EAAE,EAAE,kBAAkB;iBACvB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE;IACjC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;QACjB,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR,QAAQ,EAAE,0BAA0B;gBACpC,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE;oBACJ,EAAE,EAAE,WAAW;iBAChB;aACF;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,0BAA0B;gBACpC,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE;oBACJ,EAAE,EAAE,WAAW;iBAChB;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,EAAE;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAE/E,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IACvF,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAC5E,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAE9E,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE;oBACH,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACtB;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE;oBACH,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACtB;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;aAClC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;aAClC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;aAClC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE;oBACH,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;oBACzB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;oBACzB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;iBAC1B;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iCAAuB,EAAC,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC1C;IAED,kCAAkC;IAClC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC;IAEvC,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE;QACtC,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;YACnC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE;IACrC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAC1E,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC5E,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,cAAc;gBACpB,GAAG,EAAE;oBACH,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACtB;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,cAAc;gBACpB,GAAG,EAAE;oBACH,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;iBACpD;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,cAAc;gBACpB,GAAG,EAAE;oBACH,MAAM,EAAE,CAAC;oBACT,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE;iBACpC;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IACpE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iCAAuB,EAAC,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC;IAC/F,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACxC;IAED,gCAAgC;IAChC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC;IAErC,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE;QACtC,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;YACnC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,EAAE;IAC9C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IACzE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE;IAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IACxE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IACxE,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE;IACtC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC3E,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAC7E,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAChC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;YAC9B,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;YACjC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;YACjC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;aAChC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE;IACxC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAC7E,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;IAC/E,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;aACpC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;YAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,CAAC,CAAC,EAAE;IACnD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;IAE9E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;IACpF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;IACtF,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;aAChC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;aACpC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE;gBACN,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;aACpC;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uDAAuD,EAAE,CAAC,CAAC,EAAE;IAChE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAC1E,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAC1E,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE;IACnC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;IAE7E,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,GAAG;oBACT,EAAE,EAAE,GAAG;iBACR;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;SAC/B;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;SACjC;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;SACjC;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAChC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC,EAAE;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IAEhF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAEpF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpD,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,GAAG;oBACT,EAAE,EAAE,GAAG;iBACR;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACzB;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;SAC/B;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;SACjC;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;SACjC;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAC3C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAChC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,CAAC,CAAC,EAAE;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;IAErF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,CAAC,CAAC,EAAE;IAC9D,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAExE,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnD,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QACxC,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC7B;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QACxC,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC7B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACzB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4EAA4E,EAAE,CAAC,CAAC,EAAE;IACrF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAEhF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnD,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QACxC,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC7B;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QACxC,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC7B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACzB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE;IACpD,MAAM,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;IACrG,MAAM,qBAAqB,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;IAErG,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAElF,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IACxF,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;IAC1F,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;IAEpF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,qBAAqB,EAAE,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,UAAU,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IAErE,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,UAAU,EAAE,cAAc,CAAC,EAAE;QAC1D,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,GAAG;oBACT,EAAE,EAAE,GAAG;iBACR;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,IAAI;iBACT;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,OAAO,EAAE,WAAW,CAAC,EAAE;QACpD,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YAChC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACpC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE;IAC/C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IAEvF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,GAAG;oBACT,EAAE,EAAE,GAAG;iBACR;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B;QACD,CAAC,EAAE;YACD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,GAAG;oBACT,EAAE,EAAE,GAAG;iBACR;aACF;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,CAAC,EAAE;IAC7D,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CAA0C,CAAC,CAAC;IAE1F,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uDAAuD,EAAE,CAAC,CAAC,EAAE;IAChE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,yCAAyC,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;IAE7F,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE;IAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IAEjF,CAAC,CAAC,SAAS,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAuB,EAAC,EAAE,EAAE,MAAM,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC;QACT,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YACpC,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;SACpC;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;YACxC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;SACxC;QACD,CAAC,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;YAC1C,OAAO,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;SAC1C;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,sBAAsB,CAAC,MAAqB;IACnD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACvD,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;gBACZ,CAAC,IAAA,sBAAa,EAAC,IAAI,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,OAAO;oBACd,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAA,iCAAuB,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAA,iCAAuB,EAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -1,10 +1,30 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
26
  exports.concatRunData = exports.isCurrentValidationData = exports.normalizeValidationData = void 0;
7
- const compare_versions_1 = __importDefault(require("compare-versions"));
27
+ const versions = __importStar(require("compare-versions"));
8
28
  const currentMajor = '3';
9
29
  const currentVersion = '3.2';
10
30
  function normalizeValidationData(data) {
@@ -26,12 +46,12 @@ function isCurrentValidationData(data, exact = true) {
26
46
  else if (!('version' in data)) {
27
47
  return false;
28
48
  }
29
- else if (typeof data.version === 'string' && compare_versions_1.default.validate(data.version)) {
49
+ else if (typeof data.version === 'string' && versions.validate(data.version)) {
30
50
  if (exact) {
31
51
  return data.version === currentVersion;
32
52
  }
33
53
  else {
34
- return compare_versions_1.default.compare(data.version, `${currentMajor}.*`, '=');
54
+ return versions.compare(data.version, `${currentMajor}.*`, '=');
35
55
  }
36
56
  }
37
57
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/validate/data.ts"],"names":[],"mappings":";;;;;;AAAA,wEAAwC;AAQxC,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,cAAc,GAAG,KAAK,CAAC;AAW7B,SAAgB,uBAAuB,CAAC,IAAoB;IAC1D,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KAC/C;SAAM;QACL,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KACjD;AACH,CAAC;AARD,0DAQC;AAED,SAAgB,uBAAuB,CAAC,IAAoB,EAAE,KAAK,GAAG,IAAI;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;QAC/B,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,0BAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9E,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,OAAO,KAAK,cAAc,CAAC;SACxC;aAAM;YACL,OAAO,0BAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC;SACjE;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;AACH,CAAC;AAdD,0DAcC;AAED,SAAgB,aAAa,CAC3B,UAA6B,EAC7B,YAAoC;IAEpC,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AARD,sCAQC"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/validate/data.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA6C;AAQ7C,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,cAAc,GAAG,KAAK,CAAC;AAW7B,SAAgB,uBAAuB,CAAC,IAAoB;IAC1D,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KAC/C;SAAM;QACL,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KACjD;AACH,CAAC;AARD,0DAQC;AAED,SAAgB,uBAAuB,CAAC,IAAoB,EAAE,KAAK,GAAG,IAAI;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;QAC/B,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9E,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,OAAO,KAAK,cAAc,CAAC;SACxC;aAAM;YACL,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,IAAI,EAAE,GAAG,CAAC,CAAC;SACjE;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;AACH,CAAC;AAdD,0DAcC;AAED,SAAgB,aAAa,CAC3B,UAA6B,EAC7B,YAAoC;IAEpC,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AARD,sCAQC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/upgrades-core",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "description": "",
5
5
  "repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
6
6
  "license": "MIT",
@@ -52,11 +52,11 @@
52
52
  "dependencies": {
53
53
  "cbor": "^8.0.0",
54
54
  "chalk": "^4.1.0",
55
- "compare-versions": "^4.0.0",
55
+ "compare-versions": "^5.0.0",
56
56
  "debug": "^4.1.1",
57
57
  "ethereumjs-util": "^7.0.3",
58
58
  "proper-lockfile": "^4.1.1",
59
59
  "solidity-ast": "^0.4.15"
60
60
  },
61
- "gitHead": "a152e12fcb622faa49ceb51ba4c695a46c3f8106"
61
+ "gitHead": "ea1b273c88ade58236ca984197e9711849881bd6"
62
62
  }
@@ -10,7 +10,9 @@ export type BasicOperation<T> =
10
10
 
11
11
  export type Operation<T, C> = C | BasicOperation<T>;
12
12
 
13
- type GetChangeOp<T, C> = (a: T, b: T) => C | undefined;
13
+ export type Cost = { cost?: number };
14
+
15
+ type GetChangeOp<T, C> = (a: T, b: T) => (C & Cost) | undefined;
14
16
 
15
17
  export function levenshtein<T, C>(a: T[], b: T[], getChangeOp: GetChangeOp<T, C>): Operation<T, C>[] {
16
18
  const matrix = buildMatrix(a, b, getChangeOp);
@@ -76,7 +78,7 @@ function buildMatrix<T, C>(a: T[], b: T[], getChangeOp: GetChangeOp<T, C>): Matr
76
78
  const predCost = predecessor.totalCost;
77
79
  const change = getChangeOp(original, updated);
78
80
  if (change !== undefined) {
79
- return { kind: 'change', totalCost: predCost + CHANGE_COST, predecessor, change };
81
+ return { kind: 'change', totalCost: predCost + (change.cost ?? CHANGE_COST), predecessor, change };
80
82
  } else {
81
83
  return { kind: 'nop', totalCost: predCost, predecessor };
82
84
  }
package/src/provider.ts CHANGED
@@ -104,6 +104,8 @@ export const networkNames: { [chainId in number]?: string } = Object.freeze({
104
104
  42: 'kovan',
105
105
  137: 'polygon',
106
106
  80001: 'polygon-mumbai',
107
+ 43113: 'avalanche-fuji',
108
+ 43114: 'avalanche',
107
109
  });
108
110
 
109
111
  export async function isDevelopmentNetwork(provider: EthereumProvider): Promise<boolean> {
@@ -1,10 +1,11 @@
1
- import { levenshtein, Operation } from '../levenshtein';
1
+ import { Cost, levenshtein, Operation } from '../levenshtein';
2
2
  import { hasLayout, ParsedTypeDetailed, isEnumMembers, isStructMembers } from './layout';
3
3
  import { UpgradesError } from '../error';
4
4
  import { StorageItem as _StorageItem, StructMember as _StructMember, StorageField as _StorageField } from './layout';
5
5
  import { LayoutCompatibilityReport } from './report';
6
6
  import { assert } from '../utils/assert';
7
7
  import { isValueType } from '../utils/is-value-type';
8
+ import { endMatchesGap, isGap } from './gap';
8
9
 
9
10
  export type StorageItem = _StorageItem<ParsedTypeDetailed>;
10
11
  type StructMember = _StructMember<ParsedTypeDetailed>;
@@ -15,13 +16,14 @@ export type StorageOperation<F extends StorageField> = Operation<F, StorageField
15
16
  export type EnumOperation = Operation<string, { kind: 'replace'; original: string; updated: string }>;
16
17
 
17
18
  type StorageFieldChange<F extends StorageField> = (
18
- | { kind: 'replace' | 'rename' }
19
+ | { kind: 'replace' | 'rename' | 'finishgap' }
19
20
  | { kind: 'typechange'; change: TypeChange }
20
21
  | { kind: 'layoutchange'; change: LayoutChange }
22
+ | { kind: 'shrinkgap'; change: TypeChange }
21
23
  ) & {
22
24
  original: F;
23
25
  updated: F;
24
- };
26
+ } & Cost;
25
27
 
26
28
  export type TypeChange = (
27
29
  | {
@@ -55,11 +57,45 @@ export type TypeChange = (
55
57
 
56
58
  export interface LayoutChange {
57
59
  uncertain?: boolean;
60
+ knownCompatible?: boolean;
58
61
  slot?: Record<'from' | 'to', string>;
59
62
  offset?: Record<'from' | 'to', number>;
60
63
  bytes?: Record<'from' | 'to', string>;
61
64
  }
62
65
 
66
+ /**
67
+ * Gets the storage field's begin position as the number of bytes from 0.
68
+ *
69
+ * @param field the storage field
70
+ * @returns the begin position, or undefined if the slot or offset is undefined
71
+ */
72
+ export function storageFieldBegin(field: StorageField): bigint | undefined {
73
+ if (field.slot === undefined || field.offset === undefined) {
74
+ return undefined;
75
+ }
76
+ return BigInt(field.slot) * 32n + BigInt(field.offset);
77
+ }
78
+
79
+ /**
80
+ * Gets the storage field's end position as the number of bytes from 0.
81
+ *
82
+ * @param field the storage field
83
+ * @returns the end position, or undefined if the slot or offset or number of bytes is undefined
84
+ */
85
+ export function storageFieldEnd(field: StorageField): bigint | undefined {
86
+ const begin = storageFieldBegin(field);
87
+ const numberOfBytes = field.type.item.numberOfBytes;
88
+ if (begin === undefined || numberOfBytes === undefined) {
89
+ return undefined;
90
+ }
91
+ return begin + BigInt(numberOfBytes);
92
+ }
93
+
94
+ const LAYOUTCHANGE_COST = 0;
95
+ const FINISHGAP_COST = 1;
96
+ const SHRINKGAP_COST = 0;
97
+ const TYPECHANGE_COST = 0;
98
+
63
99
  export class StorageLayoutComparator {
64
100
  hasAllowedUncheckedCustomTypes = false;
65
101
 
@@ -80,10 +116,39 @@ export class StorageLayoutComparator {
80
116
  ): StorageOperation<F>[] {
81
117
  const ops = levenshtein(original, updated, (a, b) => this.getFieldChange(a, b));
82
118
 
83
- if (allowAppend) {
84
- return ops.filter(o => o.kind !== 'append');
85
- } else {
86
- return ops;
119
+ // filter operations: the callback function returns true if operation is unsafe, false if safe
120
+ return ops.filter(o => {
121
+ if (o.kind === 'insert') {
122
+ const updatedStart = storageFieldBegin(o.updated);
123
+ const updatedEnd = storageFieldEnd(o.updated);
124
+ // If we cannot get the updated position, or if any entry in the original layout (that is not a gap) overlaps, then the insertion is unsafe.
125
+ return (
126
+ updatedStart === undefined ||
127
+ updatedEnd === undefined ||
128
+ original
129
+ .filter(entry => !isGap(entry))
130
+ .some(entry => {
131
+ const origStart = storageFieldBegin(entry);
132
+ const origEnd = storageFieldEnd(entry);
133
+ return (
134
+ origStart === undefined ||
135
+ origEnd === undefined ||
136
+ overlaps(origStart, origEnd, updatedStart, updatedEnd)
137
+ );
138
+ })
139
+ );
140
+ } else if ((o.kind === 'shrinkgap' || o.kind === 'finishgap') && endMatchesGap(o.original, o.updated)) {
141
+ // Gap shrink or gap replacement that finishes on the same slot is safe
142
+ return false;
143
+ } else if (o.kind === 'append' && allowAppend) {
144
+ return false;
145
+ }
146
+ return true;
147
+ });
148
+
149
+ // https://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap
150
+ function overlaps(startA: bigint, endA: bigint, startB: bigint, endB: bigint) {
151
+ return startA < endB && startB < endA;
87
152
  }
88
153
  }
89
154
 
@@ -107,28 +172,29 @@ export class StorageLayoutComparator {
107
172
  const typeChange = !retypedFromOriginal && this.getTypeChange(original.type, updated.type, { allowAppend: false });
108
173
  const layoutChange = this.getLayoutChange(original, updated);
109
174
 
110
- if (updated.retypedFrom && layoutChange) {
111
- return { kind: 'layoutchange', original, updated, change: layoutChange };
175
+ if (updated.retypedFrom && layoutChange && (!layoutChange.uncertain || !layoutChange.knownCompatible)) {
176
+ return { kind: 'layoutchange', original, updated, change: layoutChange, cost: LAYOUTCHANGE_COST };
177
+ } else if (nameChange && endMatchesGap(original, updated)) {
178
+ // original is a gap that was consumed by a non-gap ending at the same slot, which is safe
179
+ return { kind: 'finishgap', original, updated, cost: FINISHGAP_COST };
180
+ } else if (typeChange && typeChange.kind === 'array shrink' && endMatchesGap(original, updated)) {
181
+ // original and updated are a gap that was shrunk and ends at the same slot, which is safe
182
+ return { kind: 'shrinkgap', change: typeChange, original, updated, cost: SHRINKGAP_COST };
112
183
  } else if (typeChange && nameChange) {
113
184
  return { kind: 'replace', original, updated };
114
185
  } else if (nameChange) {
115
186
  return { kind: 'rename', original, updated };
116
187
  } else if (typeChange) {
117
- return { kind: 'typechange', change: typeChange, original, updated };
188
+ return { kind: 'typechange', change: typeChange, original, updated, cost: TYPECHANGE_COST };
118
189
  } else if (layoutChange && !layoutChange.uncertain) {
119
190
  // Any layout change should be caught earlier as a type change, but we
120
191
  // add this check as a safety fallback.
121
- return { kind: 'layoutchange', original, updated, change: layoutChange };
192
+ return { kind: 'layoutchange', original, updated, change: layoutChange, cost: LAYOUTCHANGE_COST };
122
193
  }
123
194
  }
124
195
 
125
196
  getLayoutChange(original: StorageField, updated: StorageField): LayoutChange | undefined {
126
- const validPair = ['uint8', 'bool'];
127
- const knownCompatibleTypes =
128
- validPair.includes(original.type.item.label) && validPair.includes(updated.type.item.label);
129
- if (original.type.item.label == updated.type.item.label || knownCompatibleTypes) {
130
- return undefined;
131
- } else if (hasLayout(original) && hasLayout(updated)) {
197
+ if (hasLayout(original) && hasLayout(updated)) {
132
198
  const change = <T>(from: T, to: T) => (from === to ? undefined : { from, to });
133
199
  const slot = change(original.slot, updated.slot);
134
200
  const offset = change(original.offset, updated.offset);
@@ -137,7 +203,11 @@ export class StorageLayoutComparator {
137
203
  return { slot, offset, bytes };
138
204
  }
139
205
  } else {
140
- return { uncertain: true };
206
+ const validChanges = [['uint8', 'bool']];
207
+ const knownCompatible = validChanges.some(
208
+ group => group.includes(original.type.item.label) && group.includes(updated.type.item.label),
209
+ );
210
+ return { uncertain: true, knownCompatible };
141
211
  }
142
212
  }
143
213
 
@@ -0,0 +1,26 @@
1
+ import { StorageField, storageFieldEnd } from './compare';
2
+
3
+ /**
4
+ * Returns true if the field represents a storage gap.
5
+ *
6
+ * @param field the storage field
7
+ * @returns true if field is a gap, otherwise false
8
+ */
9
+ export function isGap(field: StorageField): boolean {
10
+ return field.label === '__gap' && field.type.head === 't_array';
11
+ }
12
+
13
+ /**
14
+ * Returns true if original storage field is a gap and the updated storage field
15
+ * ends at the exact same position as the gap.
16
+ *
17
+ * @param original the original storage field
18
+ * @param updated the updated storage field
19
+ * @returns true if original is a gap and original and updated end at the same position, otherwise false
20
+ */
21
+ export function endMatchesGap(original: StorageField, updated: StorageField) {
22
+ const originalEnd = storageFieldEnd(original);
23
+ const updatedEnd = storageFieldEnd(updated);
24
+
25
+ return isGap(original) && originalEnd !== undefined && updatedEnd !== undefined && originalEnd === updatedEnd;
26
+ }
@@ -0,0 +1,119 @@
1
+ import _test, { TestFn } from 'ava';
2
+ import { ContractDefinition } from 'solidity-ast';
3
+ import { ASTDereferencer, findAll } from 'solidity-ast/utils';
4
+ import { artifacts } from 'hardhat';
5
+ import { astDereferencer } from '../ast-dereferencer';
6
+ import { extractStorageLayout } from './extract';
7
+ import { StorageLayoutComparator } from './compare';
8
+ import { StorageLayout, getDetailedLayout } from './layout';
9
+
10
+ interface Context {
11
+ extractStorageLayout: (contract: string) => ReturnType<typeof extractStorageLayout>;
12
+ }
13
+
14
+ const test = _test as TestFn<Context>;
15
+
16
+ const dummyDecodeSrc = () => 'file.sol:1';
17
+ const testContracts = [
18
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V1',
19
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V2_Ok',
20
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V2_Bad1',
21
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V2_Bad2',
22
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V2_Bad3',
23
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V2_Bad4',
24
+ 'contracts/test/Storage.sol:StorageUpgrade_Gap_V2_Bad5',
25
+ 'contracts/test/Storage.sol:StorageUpgrade_MultiConsumeGap_V1',
26
+ 'contracts/test/Storage.sol:StorageUpgrade_MultiConsumeGap_V2_Ok',
27
+ ];
28
+
29
+ test.before(async t => {
30
+ const contracts: Record<string, ContractDefinition> = {};
31
+ const deref: Record<string, ASTDereferencer> = {};
32
+ const storageLayout: Record<string, StorageLayout> = {};
33
+ for (const contract of testContracts) {
34
+ const buildInfo = await artifacts.getBuildInfo(contract);
35
+ if (buildInfo === undefined) {
36
+ throw new Error(`Build info not found for contract ${contract}`);
37
+ }
38
+ const solcOutput = buildInfo.output;
39
+ for (const def of findAll('ContractDefinition', solcOutput.sources['contracts/test/Storage.sol'].ast)) {
40
+ contracts[def.name] = def;
41
+ deref[def.name] = astDereferencer(solcOutput);
42
+ storageLayout[def.name] = (solcOutput.contracts['contracts/test/Storage.sol'][def.name] as any).storageLayout;
43
+ }
44
+ }
45
+
46
+ t.context.extractStorageLayout = name =>
47
+ extractStorageLayout(contracts[name], dummyDecodeSrc, deref[name], storageLayout[name]);
48
+ });
49
+
50
+ function getReport(original: StorageLayout, updated: StorageLayout) {
51
+ const originalDetailed = getDetailedLayout(original);
52
+ const updatedDetailed = getDetailedLayout(updated);
53
+ const comparator = new StorageLayoutComparator();
54
+ return comparator.compareLayouts(originalDetailed, updatedDetailed);
55
+ }
56
+
57
+ test('shrinkgap', t => {
58
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Gap_V1');
59
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Gap_V2_Ok');
60
+ const report = getReport(v1, v2);
61
+ t.true(report.ok);
62
+ t.is(report.explain(), '');
63
+ });
64
+
65
+ test('finishgap', t => {
66
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_MultiConsumeGap_V1');
67
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_MultiConsumeGap_V2_Ok');
68
+ const report = getReport(v1, v2);
69
+ t.true(report.ok);
70
+ t.is(report.explain(), '');
71
+ });
72
+
73
+ test('insert var without shrink gap', t => {
74
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Gap_V1');
75
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Gap_V2_Bad1');
76
+ const report = getReport(v1, v2);
77
+ t.false(report.ok);
78
+ t.snapshot(report.explain());
79
+ });
80
+
81
+ test('delete var and expand gap', t => {
82
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Gap_V1');
83
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Gap_V2_Bad2');
84
+ const report = getReport(v1, v2);
85
+ t.false(report.ok);
86
+ t.snapshot(report.explain());
87
+ });
88
+
89
+ test('shrink gap without adding var', t => {
90
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Gap_V1');
91
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Gap_V2_Bad3');
92
+ const report = getReport(v1, v2);
93
+ t.false(report.ok);
94
+ t.snapshot(report.explain());
95
+ });
96
+
97
+ test('insert var and shrink gap too much', t => {
98
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Gap_V1');
99
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Gap_V2_Bad4');
100
+ const report = getReport(v1, v2);
101
+ t.false(report.ok);
102
+ t.snapshot(report.explain());
103
+ });
104
+
105
+ test('insert vars and shrink gap not enough', t => {
106
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Gap_V1');
107
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Gap_V2_Bad5');
108
+ const report = getReport(v1, v2);
109
+ t.false(report.ok);
110
+ t.snapshot(report.explain());
111
+ });
112
+
113
+ test('insert vars without shrink gap (uint128)', t => {
114
+ const v1 = t.context.extractStorageLayout('StorageUpgrade_Uint128Gap_V1');
115
+ const v2 = t.context.extractStorageLayout('StorageUpgrade_Uint128Gap_V2_Bad');
116
+ const report = getReport(v1, v2);
117
+ t.false(report.ok);
118
+ t.snapshot(report.explain());
119
+ });
@@ -0,0 +1,59 @@
1
+ # Snapshot report for `src/storage/report-gap.test.ts`
2
+
3
+ The actual snapshot is saved in `report-gap.test.ts.snap`.
4
+
5
+ Generated by [AVA](https://avajs.dev).
6
+
7
+ ## insert var without shrink gap
8
+
9
+ > Snapshot 1
10
+
11
+ `file.sol:1: Layout changed for \`__gap\` (uint256[48] -> uint256[48])␊
12
+ - Slot changed from 2 to 3␊
13
+ > Set __gap array to size 47`
14
+
15
+ ## delete var and expand gap
16
+
17
+ > Snapshot 1
18
+
19
+ `StorageUpgrade_Gap_V1: Deleted \`b\`␊
20
+ > Keep the variable even if unused␊
21
+ ␊
22
+ file.sol:1: Upgraded \`__gap\` to an incompatible type␊
23
+ - Bad storage gap resize from 48 to 49␊
24
+ Size cannot increase`
25
+
26
+ ## shrink gap without adding var
27
+
28
+ > Snapshot 1
29
+
30
+ `file.sol:1: Upgraded \`__gap\` to an incompatible type␊
31
+ - Bad storage gap resize from 48 to 47␊
32
+ Size decrease must match with corresponding variable inserts␊
33
+ > Set __gap array to size 48`
34
+
35
+ ## insert var and shrink gap too much
36
+
37
+ > Snapshot 1
38
+
39
+ `file.sol:1: Upgraded \`__gap\` to an incompatible type␊
40
+ - Bad storage gap resize from 48 to 46␊
41
+ Size decrease must match with corresponding variable inserts␊
42
+ > Set __gap array to size 47`
43
+
44
+ ## insert vars and shrink gap not enough
45
+
46
+ > Snapshot 1
47
+
48
+ `file.sol:1: Upgraded \`__gap\` to an incompatible type␊
49
+ - Bad storage gap resize from 48 to 47␊
50
+ Size decrease must match with corresponding variable inserts␊
51
+ > Set __gap array to size 46`
52
+
53
+ ## insert vars without shrink gap (uint128)
54
+
55
+ > Snapshot 1
56
+
57
+ `file.sol:1: Layout changed for \`__gap\` (uint128[49] -> uint128[49])␊
58
+ - Slot changed from 1 to 2␊
59
+ > Set __gap array to size 48`
@@ -6,6 +6,7 @@ import { astDereferencer } from '../ast-dereferencer';
6
6
  import { extractStorageLayout } from './extract';
7
7
  import { StorageLayoutComparator } from './compare';
8
8
  import { StorageLayout, getDetailedLayout } from './layout';
9
+ import { getStorageUpgradeErrors } from '.';
9
10
 
10
11
  interface Context {
11
12
  extractStorageLayout: (contract: string) => ReturnType<typeof extractStorageLayout>;
@@ -25,6 +26,8 @@ const testContracts = [
25
26
  'contracts/test/RenamedRetyped.sol:ConfusingRetypeV2',
26
27
  'contracts/test/RenamedRetyped.sol:NonHardcodedRetypeV1',
27
28
  'contracts/test/RenamedRetyped.sol:NonHardcodedRetypeV2',
29
+ 'contracts/test/RenamedRetyped.sol:LayoutChangeV1',
30
+ 'contracts/test/RenamedRetyped.sol:LayoutChangeV2',
28
31
  ];
29
32
 
30
33
  test.before(async t => {
@@ -104,3 +107,27 @@ test('non-hardcoded retype', t => {
104
107
  t.true(report.ok);
105
108
  t.snapshot(report.explain());
106
109
  });
110
+
111
+ test('retype with layout change', t => {
112
+ const v1 = t.context.extractStorageLayout('LayoutChangeV1');
113
+ const v2 = t.context.extractStorageLayout('LayoutChangeV2');
114
+
115
+ // ensure both variables' layout changes appear in the internal errors
116
+ t.like(getStorageUpgradeErrors(v1, v2), {
117
+ length: 2,
118
+ 0: {
119
+ kind: 'layoutchange',
120
+ original: { label: 'a' },
121
+ updated: { label: 'a' },
122
+ },
123
+ 1: {
124
+ kind: 'layoutchange',
125
+ original: { label: 'b' },
126
+ updated: { label: 'b' },
127
+ },
128
+ });
129
+
130
+ const report = getReport(v1, v2);
131
+ t.false(report.ok);
132
+ t.snapshot(report.explain());
133
+ });
@@ -42,3 +42,10 @@ Generated by [AVA](https://avajs.dev).
42
42
  > Snapshot 1
43
43
 
44
44
  ''
45
+
46
+ ## retype with layout change
47
+
48
+ > Snapshot 1
49
+
50
+ `file.sol:1: Layout changed for \`a\` (bool -> uint16)␊
51
+ - Number of bytes changed from 1 to 2`