Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New tab page ads should adhere to frequency caps #20089

Closed
tmancey opened this issue Dec 14, 2021 · 1 comment · Fixed by brave/brave-core#11594
Closed

New tab page ads should adhere to frequency caps #20089

tmancey opened this issue Dec 14, 2021 · 1 comment · Fixed by brave/brave-core#11594
Assignees

Comments

@tmancey
Copy link
Contributor

tmancey commented Dec 14, 2021

No description provided.

@tmancey tmancey added bug priority/P3 The next thing for us to work on. It'll ride the trains. QA/Yes release-notes/exclude feature/ads OS/Desktop labels Dec 14, 2021
@tmancey tmancey self-assigned this Dec 14, 2021
@tmancey tmancey added this to the 1.35.x - Nightly milestone Dec 14, 2021
@btlechowski btlechowski added the QA/In-Progress Indicates that QA is currently in progress for that particular issue label Jan 20, 2022
@btlechowski
Copy link

Verification passed on

Brave 1.35.92 Chromium: 97.0.4692.99 (Official Build) beta (64-bit)
Revision d740da257583289dbebd2eb37e8668928fac5ead-refs/branch-heads/4692@{#1461}
OS Ubuntu 18.04 LTS

Verified test plan from brave/brave-core#11594

Verified NTP ad is shown and user is paid for it:
image

[25815:25815:0125/090036.558627:VERBOSE3:new_tab_page_ad_event_viewed.cc(23)] Viewed new tab page ad with uuid 8c95d0ea-eadc-4849-9f44-14ddb3fbe680 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce
[25815:25815:0125/090036.564321:VERBOSE6:new_tab_page_ad_event_viewed.cc(31)] Successfully logged new tab page ad viewed event
[25815:25815:0125/090036.568019:VERBOSE3:new_tab_page_ad_event_served.cc(23)] Served new tab page ad with uuid 8c95d0ea-eadc-4849-9f44-14ddb3fbe680 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce
[25815:25815:0125/090036.572727:VERBOSE3:ads_impl.cc(762)] Successfully deposited funds for new_tab_page_ad with creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce and view valued at 0.005
[25815:25815:0125/090036.573020:VERBOSE1:confirmations.cc(69)] Confirming view for new_tab_page_ad with transaction id 8932c33c-a462-4224-96f9-c48004739765 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce
[25815:25815:0125/090036.574993:VERBOSE1:redeem_unblinded_token.cc(55)] Redeem unblinded token
[25815:25815:0125/090036.575842:VERBOSE1:redeem_unblinded_token.cc(74)] CreateConfirmation
[25815:25815:0125/090036.576030:VERBOSE2:redeem_unblinded_token.cc(75)] POST /v2/confirmation/{confirmation_id}/{credential}
[25815:25815:0125/090036.576216:VERBOSE6:redeem_unblinded_token.cc(79)] URL Request:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlbnNcIjpbXCJEanQ1QmJ5cGgzcDFhU3BtbGxabkRvZ2NVRmNiRTJyU1RBUlRUVkJnV1h3PVwiXSxcImJ1aWxkQ2hhbm5lbFwiOlwiYmV0YVwiLFwiY3JlYXRpdmVJbnN0YW5jZUlkXCI6XCIzODhlMjkzMi1hOWE3LTQyYjItOTk4My1hNzYxN2U0YjhmY2VcIixcInBheWxvYWRcIjp7fSxcInBsYXRmb3JtXCI6XCJsaW51eFwiLFwicHVibGljS2V5XCI6XCJubFZaYmVyOHRJNzZFSFF5d0srRzlNbDk4eC9IbkZyNkpDaVBZdjEzR1VBPVwiLFwic3R1ZGllc1wiOltdLFwidHlwZVwiOlwidmlld1wifSIsInNpZ25hdHVyZSI6InBVUmlobjV1UCtWS3krZU5NYXkzOGhhQ25ySkxoLzRYNjRBaWE0RThBcWJYOVVFR000TzRiVjN6SGhSQVFNam9mOXdubDFCRlo4NVJ5RkNMZFJjQkZ3PT0iLCJ0IjoicXAzcUNDVmd0eVE1OEdOWVFySHlSd2R6S2N3YVovdjZaOTMyKzBOYnlEeUVkcXZ6K01zbktFZkVqZVNjbUpuM1VIdit4VEhOY2Y1SkVaK1BuTTAvNWc9PSJ9
  Content: {"blindedPaymentTokens":["Djt5Bbyph3p1aSpmllZnDogcUFcbE2rSTARTTVBgWXw="],"buildChannel":"beta","creativeInstanceId":"388e2932-a9a7-42b2-9983-a7617e4b8fce","payload":{},"platform":"linux","publicKey":"nlVZber8tI76EHQywK+G9Ml98x/HnFr6JCiPYv13GUA=","studies":[],"type":"view"}
  Content Type: application/json
  Method: kPost
[25815:25815:0125/090036.618844:VERBOSE6:new_tab_page_ad_event_served.cc(31)] Successfully logged new tab page ad served event
[25815:25815:0125/090036.625368:INFO:CONSOLE(3190)] "Rerendering RewardsContextAdapter", source: chrome://newtab/brave_new_tab.bundle.js (3190)
[25815:25815:0125/090036.788894:INFO:CONSOLE(3316)] "setting today viewport observer, should only happen once", source: chrome://newtab/brave_new_tab.bundle.js (3316)
[25815:25815:0125/090036.929879:VERBOSE1:conversions.cc(199)] URL is not supported for conversions
[25815:25815:0125/090036.929959:VERBOSE1:ads_impl.cc(187)] Visited URL is not supported
[25815:25815:0125/090036.973891:VERBOSE1:uphold.cc(114)] Uphold wallet is not VERIFIED.
[25815:25815:0125/090037.448872:VERBOSE1:redeem_unblinded_token.cc(90)] OnCreateConfirmation
[25815:25815:0125/090037.448991:VERBOSE6:redeem_unblinded_token.cc(92)] URL Response:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlbnNcIjpbXCJEanQ1QmJ5cGgzcDFhU3BtbGxabkRvZ2NVRmNiRTJyU1RBUlRUVkJnV1h3PVwiXSxcImJ1aWxkQ2hhbm5lbFwiOlwiYmV0YVwiLFwiY3JlYXRpdmVJbnN0YW5jZUlkXCI6XCIzODhlMjkzMi1hOWE3LTQyYjItOTk4My1hNzYxN2U0YjhmY2VcIixcInBheWxvYWRcIjp7fSxcInBsYXRmb3JtXCI6XCJsaW51eFwiLFwicHVibGljS2V5XCI6XCJubFZaYmVyOHRJNzZFSFF5d0srRzlNbDk4eC9IbkZyNkpDaVBZdjEzR1VBPVwiLFwic3R1ZGllc1wiOltdLFwidHlwZVwiOlwidmlld1wifSIsInNpZ25hdHVyZSI6InBVUmlobjV1UCtWS3krZU5NYXkzOGhhQ25ySkxoLzRYNjRBaWE0RThBcWJYOVVFR000TzRiVjN6SGhSQVFNam9mOXdubDFCRlo4NVJ5RkNMZFJjQkZ3PT0iLCJ0IjoicXAzcUNDVmd0eVE1OEdOWVFySHlSd2R6S2N3YVovdjZaOTMyKzBOYnlEeUVkcXZ6K01zbktFZkVqZVNjbUpuM1VIdit4VEhOY2Y1SkVaK1BuTTAvNWc9PSJ9
  Response Status Code: 201
  Response: {"id":"91983408-4363-4e81-90db-8fd66402f094","payload":{},"createdAt":"2022-01-25T03:29:58.063Z","type":"view","modifiedAt":"2022-01-25T03:29:58.063Z","creativeInstanceId":"388e2932-a9a7-42b2-9983-a7617e4b8fce"}
[25815:25815:0125/090037.449094:VERBOSE1:redeem_unblinded_token.cc(118)] FetchPaymentToken
[25815:25815:0125/090037.449134:VERBOSE2:redeem_unblinded_token.cc(119)] GET /v2/confirmation/{confirmation_id}/paymentToken
[25815:25815:0125/090037.449156:VERBOSE6:redeem_unblinded_token.cc(123)] URL Request:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/paymentToken
  Method: kGet
[25815:25815:0125/090037.977816:VERBOSE1:redeem_unblinded_token.cc(134)] OnFetchPaymentToken
[25815:25815:0125/090037.978306:VERBOSE6:redeem_unblinded_token.cc(136)] URL Response:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/paymentToken
  Response Status Code: 202
  Response: {"error":"Payment Tokens are not ready","statusCode":202}
[25815:25815:0125/090037.978773:VERBOSE1:redeem_unblinded_token.cc(162)] Payment token is not ready
[25815:25815:0125/090037.980402:VERBOSE1:confirmations.cc(301)] Failed to redeem unblinded token for new_tab_page_ad with confirmation id 91983408-4363-4e81-90db-8fd66402f094, transaction id 8932c33c-a462-4224-96f9-c48004739765, creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce and view
[25815:25815:0125/090037.981550:VERBOSE1:confirmations.cc(213)] Added view confirmation for new_tab_page_ad with id 91983408-4363-4e81-90db-8fd66402f094, transaction id8932c33c-a462-4224-96f9-c48004739765 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce to the confirmations queue
[25815:25815:0125/090037.985204:VERBOSE1:refill_unblinded_tokens.cc(84)] No need to refill unblinded tokens as we already have 49 unblinded tokens which is above the minimum threshold of 20
[25815:25815:0125/090037.985395:VERBOSE1:confirmations.cc(109)] Retry sending failed confirmations in 0 hours, 0 minutes, 0 seconds at 9:00 AM
[25815:25815:0125/090037.985867:VERBOSE1:confirmations.cc(237)] Removed view confirmation for new_tab_page_ad with id 91983408-4363-4e81-90db-8fd66402f094, transaction id 8932c33c-a462-4224-96f9-c48004739765 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce from the confirmations queue
[25815:25815:0125/090037.986485:VERBOSE1:redeem_unblinded_token.cc(55)] Redeem unblinded token
[25815:25815:0125/090037.987036:VERBOSE1:redeem_unblinded_token.cc(118)] FetchPaymentToken
[25815:25815:0125/090037.987279:VERBOSE2:redeem_unblinded_token.cc(119)] GET /v2/confirmation/{confirmation_id}/paymentToken
[25815:25815:0125/090037.987425:VERBOSE6:redeem_unblinded_token.cc(123)] URL Request:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/paymentToken
  Method: kGet
[25815:25815:0125/090038.504070:VERBOSE1:redeem_unblinded_token.cc(134)] OnFetchPaymentToken
[25815:25815:0125/090038.504275:VERBOSE6:redeem_unblinded_token.cc(136)] URL Response:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/paymentToken
  Response Status Code: 202
  Response: {"error":"Payment Tokens are not ready","statusCode":202}
[25815:25815:0125/090038.504531:VERBOSE1:redeem_unblinded_token.cc(162)] Payment token is not ready
[25815:25815:0125/090038.504662:VERBOSE1:confirmations.cc(301)] Failed to redeem unblinded token for new_tab_page_ad with confirmation id 91983408-4363-4e81-90db-8fd66402f094, transaction id 8932c33c-a462-4224-96f9-c48004739765, creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce and view
[25815:25815:0125/090038.504831:VERBOSE1:confirmations.cc(213)] Added view confirmation for new_tab_page_ad with id 91983408-4363-4e81-90db-8fd66402f094, transaction id8932c33c-a462-4224-96f9-c48004739765 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce to the confirmations queue
[25815:25815:0125/090038.506050:VERBOSE1:refill_unblinded_tokens.cc(84)] No need to refill unblinded tokens as we already have 49 unblinded tokens which is above the minimum threshold of 20
[25815:25815:0125/090038.506289:VERBOSE1:confirmations.cc(109)] Retry sending failed confirmations in 0 hours, 0 minutes, 1 second at 9:00 AM
[25815:25815:0125/090039.118745:VERBOSE1:browser_manager.cc(65)] Browser window is inactive
[25815:25815:0125/090039.118988:VERBOSE6:user_activity.cc(44)] Triggered event: 17 (4.5:2:3600 s)
[25815:25815:0125/090039.119049:VERBOSE1:browser_manager.cc(99)] Browser did enter background
[25815:25815:0125/090039.119081:VERBOSE6:user_activity.cc(44)] Triggered event: 02 (5:2:3600 s)
[25815:25815:0125/090039.507567:VERBOSE1:confirmations.cc(237)] Removed view confirmation for new_tab_page_ad with id 91983408-4363-4e81-90db-8fd66402f094, transaction id 8932c33c-a462-4224-96f9-c48004739765 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce from the confirmations queue
[25815:25815:0125/090039.508008:VERBOSE1:redeem_unblinded_token.cc(55)] Redeem unblinded token
[25815:25815:0125/090039.509221:VERBOSE1:redeem_unblinded_token.cc(118)] FetchPaymentToken
[25815:25815:0125/090039.509323:VERBOSE2:redeem_unblinded_token.cc(119)] GET /v2/confirmation/{confirmation_id}/paymentToken
[25815:25815:0125/090039.509417:VERBOSE6:redeem_unblinded_token.cc(123)] URL Request:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/paymentToken
  Method: kGet
[25815:25815:0125/090040.038431:VERBOSE1:redeem_unblinded_token.cc(134)] OnFetchPaymentToken
[25815:25815:0125/090040.038517:VERBOSE6:redeem_unblinded_token.cc(136)] URL Response:
  URL: https://ads-serve.brave.com/v2/confirmation/91983408-4363-4e81-90db-8fd66402f094/paymentToken
  Response Status Code: 200
  Response: {"id":"91983408-4363-4e81-90db-8fd66402f094","createdAt":"2022-01-25T03:29:58.063Z","type":"view","modifiedAt":"2022-01-25T03:29:58.063Z","creativeInstanceId":"388e2932-a9a7-42b2-9983-a7617e4b8fce","paymentToken":{"publicKey":"+pDg2XfcZaz5/EwBCAEc7GtJsQH5eoeO/FMbXBktomU=","batchProof":"IJiSrcXc6lFpwwc8lrvUZLQAnRq3Uh1GoaT9x7RCaAvdGBn2qBQjFF0GrHE/kFbXODSgwP1m+pt6E+pVJrImAQ==","signedTokens":["BAXGVHrhittobGvW9OG/sZFf/HcFT+gXvloMrm6ZNxs="]}}
[25815:25815:0125/090040.043731:VERBOSE1:confirmations.cc(284)] Successfully redeemed unblinded token for new_tab_page_ad with confirmation id 91983408-4363-4e81-90db-8fd66402f094, transaction id 8932c33c-a462-4224-96f9-c48004739765, creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce and view. You now have 1 unblinded payment tokens which will be redeemed in 0 hours, 0 minutes, -48 seconds at 8:59 AM
[25815:25815:0125/090040.044670:VERBOSE1:refill_unblinded_tokens.cc(84)] No need to refill unblinded tokens as we already have 49 unblinded tokens which is above the minimum threshold of 20
[25815:25815:0125/090040.044783:VERBOSE1:confirmations.cc(100)] No failed confirmations to retry
[25815:25815:0125/090040.830741:VERBOSE1:uphold.cc(114)] Uphold wallet is not VERIFIED.
[25815:25815:0125/090057.989494:VERBOSE1:redeem_unblinded_payment_tokens.cc(82)] RedeemUnblindedPaymentTokens
[25815:25815:0125/090057.989573:VERBOSE2:redeem_unblinded_payment_tokens.cc(91)] PUT /v2/confirmation/payment/{payment_id}
[25815:25815:0125/090057.989667:VERBOSE6:redeem_unblinded_payment_tokens.cc(101)] URL Request:
  URL: https://ads-serve.brave.com/v2/confirmation/payment/79a3c823-3508-462c-9280-2ede10331b1f
  Content: {"payload":"{\"paymentId\":\"79a3c823-3508-462c-9280-2ede10331b1f\"}","paymentCredentials":[{"confirmationType":"view","credential":{"signature":"XKrGl+v/zecJxQ512H1Foguj/JNV3IJq16Eb//YJd+1CC2ZEOXEKVZ12F+2r4qb6wt9TFTp39eY+TTh4dgav8Q==","t":"Q4TsdD949R7pu5t2ftIG0LfbSwOQ9xxdK+vWpSQr8KfaAm7OmXlqm84mohs16HBRy1pMgytRjnN2iIEn9ugP+Q=="},"publicKey":"+pDg2XfcZaz5/EwBCAEc7GtJsQH5eoeO/FMbXBktomU="}]}
  Content Type: application/json
  Method: kPut
[25815:25815:0125/090059.645781:VERBOSE1:redeem_unblinded_payment_tokens.cc(113)] OnRedeemUnblindedPaymentTokens
[25815:25815:0125/090059.645870:VERBOSE6:redeem_unblinded_payment_tokens.cc(115)] URL Response:
  URL: https://ads-serve.brave.com/v2/confirmation/payment/79a3c823-3508-462c-9280-2ede10331b1f
  Response Status Code: 200
  Response: {"response":"Ok","status":200,"message":"Ok"}
[25815:25815:0125/090059.646413:VERBOSE1:account.cc(271)] Successfully redeemed unblinded payment tokens

Catalog does not exist

[29593:29593:0125/093500.377475:VERBOSE2:permission_rule_util.cc(25)] Catalog does not exist
[29593:29593:0125/093500.377527:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[29593:29593:0125/093500.377577:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 63351456-6fdf-4a23-9a1b-14516a3ad356 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce

Catalog has expired

[3665:3665:0125/051747.878043:VERBOSE2:permission_rule_util.cc(25)] Catalog has expired
[3665:3665:0125/051747.878316:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[3665:3665:0125/051747.878500:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 554d1f1f-d15b-41a1-acd3-8dffff607c20 and creative instance id c94c6119-4a23-4c5d-802f-3a0d63d0d677

Not in catalog

[21389:21389:0125/083942.489682:INFO:creative_new_tab_page_ads_database_table.cc(580)] Failed to get creative new tab page ad
[21389:21389:0125/083942.489977:VERBOSE1:new_tab_page_ad.cc(68)] Failed to fire new tab page ad event due to missing creative instance id 631400c8-a166-4c09-9a57-e9acf43e2c6b
[21389:21389:0125/083942.490125:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 812b9a7f-ea23-4ced-a102-60f0bd91847f and creative instance id 631400c8-a166-4c09-9a57-e9acf43e2c6b

Missing issuers

[22103:22103:0125/084648.703666:VERBOSE2:permission_rule_util.cc(25)] Missing issuers
[22103:22103:0125/084648.703903:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[22103:22103:0125/084648.703987:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 63af6ad6-bd8c-4b33-ab3b-2a5396839ae5 and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce

less than 10 unblinded tokens

[3995:3995:0125/054535.893391:VERBOSE2:permission_rule_util.cc(25)] You do not have enough unblinded tokens
[3995:3995:0125/054535.893427:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[3995:3995:0125/054535.893460:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid c0d9b70d-cd56-4c3a-9a80-29006cab8316 and creative instance id c94c6119-4a23-4c5d-802f-3a0d63d0d677

NTP fails on user activity

[23117:23117:0125/085306.953099:VERBOSE2:permission_rule_util.cc(25)] User was inactive
[23117:23117:0125/085306.953175:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[23117:23117:0125/085306.953230:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid cd0f1e0f-a152-471b-8946-d92390c98f5a and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce

NTP ads per hour exceeded (default)

[25815:25815:0125/090723.369802:VERBOSE2:permission_rule_util.cc(25)] You have exceeded the allowed new tab page ads per hour
[25815:25815:0125/090723.369840:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[25815:25815:0125/090723.369915:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 1d538aed-85fc-4eea-9d03-959ebfb3941b and creative instance id 388e2932-a9a7-42b2-9983-a7617e4b8fce

NTP ads per hour exceeded (overwritten to 1)

[27423:27423:0125/092333.610512:VERBOSE2:permission_rule_util.cc(25)] You have exceeded the allowed new tab page ads per hour
[27423:27423:0125/092333.610564:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[27423:27423:0125/092333.610613:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 303084f7-7045-4b7c-b1d5-56b68e16b804 and creative instance id 631400c8-a166-4c09-9a57-e9acf43e2c6b

NTP ads per day exceeded (overwritten to 1)

[29188:29188:0125/093103.381556:VERBOSE2:permission_rule_util.cc(25)] You have exceeded the allowed new tab page ads per day
[29188:29188:0125/093103.381594:VERBOSE1:new_tab_page_ad.cc(54)] New tab page ad: Not allowed due to permission rules
[29188:29188:0125/093103.381628:VERBOSE1:ads_impl.cc(853)] Failed to fire new tab page ad kViewed event for uuid 94b7f5b8-b9b2-4121-8702-1915e23bba96 and creative instance id 631400c8-a166-4c09-9a57-e9acf43e2c6b

@btlechowski btlechowski added QA Pass-Linux and removed QA/In-Progress Indicates that QA is currently in progress for that particular issue labels Jan 25, 2022
@tmancey tmancey added this to Ads Jun 10, 2024
@tmancey tmancey moved this to Done in Ads Jun 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

2 participants