CINXE.COM
Hotel Lucky Seven - Toronto Public Library - OverDrive
<!DOCTYPE html> <html lang="en" dir="ltr" class="no-js"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=1"> <title>Hotel Lucky Seven - Toronto Public Library - OverDrive</title> <link rel='shortcut icon' type='image/x-icon' href='https://lightning.od-cdn.com/static/img/favicon.bb86d660d3929b5c0c65389d6a8e8aba.ico' /> <meta name="twitter:title" property="og:title" content="Toronto Public Library"/> <meta name="twitter:description" property="og:description" content="Browse, borrow, and enjoy titles from the Toronto Public Library digital collection."/> <meta name="twitter:image" property="og:image" content="https://thunder.cdn.overdrive.com/logo-resized/1357?1702054398"/> <meta property="og:url" content="/media/11021582"/> <meta name="twitter:card" content="summary" /> <meta property="og:site_name" content="Toronto Public Library" /> <meta name="twitter:site" content="@OverDriveLibs" /> <meta property="og:locale" content="en" /> <!-- iOS smart app banner --> <meta name="apple-itunes-app" content="app-id=1076402606" /> <!-- Google Play app banner --> <link rel="manifest" href="https://lightning.od-cdn.com/static/manifest.ed71e3d923d287cd1dce64ae0d3cc8b8.json"> <meta name="google-play-app" content="app-id=com.overdrive.mobile.android.libby" /> <!-- Windows Store app banner --> <meta name="msApplication-ID" content="2FA138F6.LibbybyOverDrive" /> <meta name="msApplication-PackageFamilyName" content="2FA138F6.LibbybyOverDrive_daecb9042jmvt" /> <link rel="stylesheet" type="text/css" href="https://lightning.od-cdn.com/static/vendor.bundle.min.b062de5a03333401085c20696b3eec95.css" onerror="cdnError(this)" /> <link rel="stylesheet" type="text/css" href="https://lightning.od-cdn.com/static/app.bundle.min.ff646b02ea668b0135a05f8fc0ba5341.css" onerror="cdnError(this)" /> <link rel='shortcut icon' type='image/x-icon' href='https://lightning.od-cdn.com/static/img/favicon.bb86d660d3929b5c0c65389d6a8e8aba.ico' /> <link rel="stylesheet" type="text/css" href="https://lightning.od-cdn.com/static/details.min.e00a0633f078148bfc8c0f1c1785812f.css" /> <style> .sample-circle-icon { background:rgba(0,28,113, 0.8) !important; } </style> <link id="highContrastStylesheet" rel="stylesheet" type="text/css" href="https://lightning.od-cdn.com/static/contrast.min.0080de07e0317a1c16252807088e794c.css"> <link rel="stylesheet" type="text/css" href="/assets/v2/css/d5724298e0a70fbc7c49e6da5aa86591/colors.css?primary=%23001c71&primaryR=0&primaryG=28&primaryB=113&primaryFontColor=%23fff&secondary=%230077c8&secondaryR=0&secondaryG=119&secondaryB=200&secondaryFontColor=%23fff&bannerIsSecondaryColor=false&defaultColor=%23222"> <script> window.OverDrive = window.OverDrive || {}; window.OverDrive.colors = {}; window.OverDrive.colors.primary = "#001c71"; window.OverDrive.colors.secondary = "#0077c8"; window.OverDrive.tenant = 243; window.OverDrive.libraryName = "Toronto Public Library"; window.OverDrive.libraryKey = "toronto"; window.OverDrive.allFeatures = ""; window.OverDrive.libraryConfigurations = {"autocomplete":{"enabled":true},"content-holds":{"enabled":true},"getACard":{"enabled":false},"backToMainCollectionLink":{"enabled":true},"promoteLibby":{"enabled":true},"switchToLibby":{"enabled":true},"showLibbyIntercept":{"enabled":true},"disableOdAppAccess":{"enabled":true},"bannerIsSecondaryColor":{"enabled":false},"lexileScores":{"enabled":true},"atosLevels":{"enabled":true},"gradeLevels":{"enabled":true},"interestLevels":{"enabled":true},"readingHistory":{"enabled":true},"reciprocalLending":{"enabled":true},"OzoneAuthentication":{"enabled":true},"Notifications":{"enabled":true},"kindleFooter":{"enabled":false},"kindleNav":{"enabled":false},"kindleLoanFormatLimit":{"enabled":false},"kindleSearchOffer":{"enabled":false},"kindleLoanOffer":{"enabled":false},"sampleOnlyMode":{},"luckyDayMenuLink":{"enabled":true},"disableWishlist":{"enabled":false},"simplifiedNavigationBar":{"enabled":false},"geo-idc":{"enabled":false},"show-star-ratings":{"enabled":true},"libby-footer-promo":{"enabled":false}}; window.OverDrive.goback = ""; window.OverDrive.mediaItems = {"11021582":{"reserveId":"5835e19d-b712-45b7-a092-63a7ca618c03","subjects":[{"id":"26","name":"Fiction"},{"id":"100","name":"Thriller"}],"bisacCodes":["FIC006000","FIC031000","FIC031010"],"bisac":[{"code":"FIC006000","description":"Fiction / Thrillers / Espionage"},{"code":"FIC031000","description":"Fiction / Thrillers / General"},{"code":"FIC031010","description":"Fiction / Thrillers / Crime"}],"levels":[],"creators":[{"id":2361874,"name":"Kotaro Isaka","role":"Author","sortName":"Isaka, Kotaro"},{"id":2329915,"name":"Brian Bergstrom","role":"Translator","sortName":"Bergstrom, Brian"},{"id":2466462,"name":"Pun Bandhu","role":"Narrator","sortName":"Bandhu, Pun"}],"languages":[{"id":"en","name":"English"}],"imprint":{"id":"198517","name":"Recorded Books"},"isBundledChild":false,"ratings":{"maturityLevel":{"id":"generalcontent","name":"General content"},"naughtyScore":{"id":"GeneralContent","name":"General content"}},"constraints":{"isDisneyEulaRequired":false},"reviewCounts":{"premium":0,"publisherSupplier":0},"isAvailable":false,"isPreReleaseTitle":false,"estimatedReleaseDate":"2024-11-20T05:00:00Z","sample":{"href":"https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com"},"publisher":{"id":"223131","name":"Recorded Books, Inc."},"series":"Assassins (Isaka)","description":"Bullet Train's hapless underworld operative and his handler are back in this thrilling new novel from internationally bestselling author Kotaro Isaka<br/>In Bullet Train, Ladybug was tasked by Maria with retrieving a suitcase from a high-speed train in Japan. The job did not go according to plan, to the delight of millions of readers and movie fans around the world.<br/>Will the unluckiest assassin in the world will find things easier this time around? <br/>All he has to do is deliver a birthday present to a guest in a luxury Tokyo hotel. It seems the simplest assignment, but by the time he leaves the guest's room one man is dead and more will soon follow. As events spiral out of control, it becomes clear that several different killers, with various missions, disguises, and signature techniques, are all staying in the hotel at the same time. And they're all particularly interested in a young woman with a photographic memory.<br/>Can Ladybug find out the truth of what's going on? And can he make it out alive?<br/>In this inventive follow-up to the international bestseller Bullet Train, Kotaro Isaka demonstrates his unparalleled gift for unique characters, gripping action, and surprising twists.","availableCopies":0,"ownedCopies":1,"luckyDayAvailableCopies":0,"luckyDayOwnedCopies":0,"holdsCount":5,"holdsRatio":5,"estimatedWaitDays":84,"isFastlane":false,"availabilityType":"normal","isRecommendableToLibrary":true,"isOwned":true,"isHoldable":true,"isAdvantageFiltered":false,"visitorEligible":false,"juvenileEligible":false,"youngAdultEligible":false,"contentAccessLevels":0,"classifications":{},"type":{"id":"audiobook","name":"Audiobook"},"covers":{"cover150Wide":{"href":"https://img3.od-cdn.com/ImageType-150/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG150.JPG","height":200,"width":150,"primaryColor":{"hex":"#EC1E44","rgb":{"red":236,"green":30,"blue":68}},"isPlaceholderImage":false},"cover300Wide":{"href":"https://img2.od-cdn.com/ImageType-400/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG400.JPG","height":400,"width":300,"primaryColor":{"hex":"#EC1E44","rgb":{"red":236,"green":30,"blue":68}},"isPlaceholderImage":false},"cover510Wide":{"href":"https://img2.od-cdn.com/ImageType-100/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG100.JPG","height":680,"width":510,"primaryColor":{"hex":"#EC1E44","rgb":{"red":236,"green":30,"blue":68}},"isPlaceholderImage":false}},"id":"11021582","firstCreatorName":"Kotaro Isaka","firstCreatorId":2361874,"firstCreatorSortName":"Isaka, Kotaro","title":"Hotel Lucky Seven","sortTitle":"Hotel Lucky Seven","starRating":3.5,"starRatingCount":2,"edition":"Unabridged","publishDate":"2024-11-19T00:00:00Z","publishDateText":"11/19/2024","formats":[{"identifiers":[{"type":"ISBN","value":"9798894861173"}],"rights":[],"fileSize":251203632,"onSaleDateUtc":"2024-11-20T05:00:00+00:00","duration":"08:43:20","hasAudioSynchronizedText":false,"isBundleParent":false,"isbn":"9798894861173","bundledContent":[],"sample":{"href":"https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com"},"fulfillmentType":"bifocal","id":"audiobook-overdrive","name":"OverDrive Listen audiobook"}],"publisherAccount":{"id":"4295","name":"Recorded Books, LLC"},"detailedSeries":{"seriesId":1931345,"seriesName":"Assassins (Isaka)","readingOrder":"4","rank":1},"sampleIsODR":false}}; window.OverDrive.thunderHost = "https://thunder.api.overdrive.com/v2"; window.OverDrive.autocompleteHost = "https://autocomplete.api.overdrive.com/v1"; window.OverDrive.autocompleteApiKey = "66d3b2fb030e46bba783b1a658705fe3"; window.patronSettings = {}; window.OverDrive.isAuthenticated = false; window.OverDrive.allowAnonymousSampling = true; window.OverDrive.hasLinkedCards = false; window.OverDrive.authType = "no-auth"; window.OverDrive.currentRoom = false; window.OverDrive.supportedFormats = [{"mediaType":"ebook","id":"ebook-pdf-adobe","name":"PDF eBook"},{"mediaType":"ebook","id":"ebook-media-do","name":"MediaDo eBook"},{"mediaType":"ebook","id":"ebook-epub-adobe","name":"EPUB eBook"},{"mediaType":"ebook","id":"ebook-kobo","name":"Kobo eBook"},{"mediaType":"audiobook","id":"audiobook-mp3","name":"MP3 audiobook"},{"mediaType":"magazine","id":"magazine-overdrive","name":"OverDrive Magazine"},{"mediaType":"ebook","id":"ebook-overdrive","name":"OverDrive Read"},{"mediaType":"audiobook","id":"audiobook-overdrive","name":"OverDrive Listen audiobook"},{"mediaType":"ntc","id":"ntc-pay-per-access","name":"External service"},{"mediaType":"ntc","id":"ntc-subscription","name":"External service"},{"mediaType":"ebook","id":"ebook-epub-open","name":"Open EPUB eBook"}]; window.OverDrive.cdn = 'https://lightning.od-cdn.com'; window.OverDrive.features = {"kindleFooter":{"enabled":false,"testable":false},"kindleNav":{"enabled":false,"testable":false},"kindleLoanFormatLimit":{"enabled":false,"testable":false},"kindleSearchOffer":{"enabled":false,"testable":false},"kindleLoanOffer":{"enabled":false,"testable":false},"kindlefire-sunset":{"enabled":true,"testable":true},"block-mp3-download":{"enabled":true,"testable":true},"simplified-notifications":{"enabled":true,"testable":true},"show-star-ratings":{"enabled":false,"testable":false},"kindlefire-sunset-date-set":{"enabled":true,"testable":true},"mp3-in-app-only":{"enabled":true,"testable":true},"show-od-desktop-message":{"enabled":true,"testable":true},"download-libby-modal":{"enabled":false,"testable":false},"hide-unowned-samples":{"enabled":true,"testable":true},"downloadlibbyfooterpromo":{"enabled":true,"testable":true},"libby-footer-promo":{"enabled":true,"testable":true},"ODAppSunsetLibbyFooterPromo ":{"enabled":true,"testable":true},"hide-lightning-campaigns":{"enabled":false,"testable":false},"simplifiedNavigationBar":{"enabled":true,"testable":true},"showAndroid7xWarningModal":{"enabled":false,"testable":false},"disableWishlist":{"enabled":true,"testable":true},"geo-idc":{"enabled":true,"testable":true},"LHTNG-5681":{"enabled":true,"testable":true},"switchToLibby":{"enabled":false,"testable":false},"kanopy-promo":{"enabled":true,"testable":true},"query-collection-metadata":{"enabled":false,"testable":false},"ozoneCnRedirect":{"enabled":true,"testable":true},"show-support-form":{"enabled":true,"testable":true},"show-china-security-code-footer":{"enabled":true,"testable":true},"updated-ga":{"enabled":true,"testable":true},"odsunset-korea-2023":{"enabled":true,"testable":true},"disableOdAppAccess":{"enabled":true,"testable":true},"sunset-audiobook-rewrite":{"enabled":true,"testable":true},"Notifications":{"enabled":true,"testable":true},"sunset-date-set":{"enabled":true,"testable":true},"enhancedSeries":{"enabled":true,"testable":true},"support-series-rank-order":{"enabled":true,"testable":true},"sample-signin-redirect":{"enabled":true,"testable":true},"windows-app-download-message":{"enabled":true,"testable":true},"only-show-owned-content":{"enabled":true,"testable":true},"sunset-is-coming":{"enabled":true,"testable":true},"view-in-libby-button":{"enabled":true,"testable":true},"provisional-format-filtering":{"enabled":true,"testable":true},"improved-preference-validation":{"enabled":true,"testable":true},"details-page-libby-button":{"enabled":true,"testable":true},"display-title-rank":{"enabled":false,"testable":true},"sampleOnlyMode":{"enabled":true,"testable":true},"keep-od-app-fulfillment":{"enabled":true,"testable":true},"hide-kanopy-covers":{"enabled":true,"testable":true},"fix-option-sorting":{"enabled":true,"testable":true},"try-libby-modal":{"enabled":true,"testable":true},"history-export":{"enabled":true,"testable":true},"hide-cta-campaigns":{"enabled":true,"testable":true},"ajax-error-reporting":{"enabled":false,"testable":false},"idc-always-captcha":{"enabled":true,"testable":true},"allow-admin-fulfillment-auth":{"enabled":false,"testable":false},"odapp-sunset":{"enabled":true,"testable":true},"api-fulfillment-new-window-fix":{"enabled":true,"testable":true},"tolino-other-button":{"enabled":false,"testable":true},"tolino":{"enabled":true,"testable":true},"reenableMp3DownloadMacOSPreCatalina":{"enabled":true,"testable":true},"cookieless-fulfillment-auth":{"enabled":true,"testable":true},"odread-fulfillment-first":{"enabled":true,"testable":true},"mp3-download-for-me-cn":{"enabled":true,"testable":true},"public-api-fulfillment":{"enabled":true,"testable":true},"fix-titlemodal-magazine-display":{"enabled":true,"testable":true},"filter-out-ntc":{"enabled":true,"testable":true},"dont-mark-su-as-expired":{"enabled":true,"testable":true},"media-types-collection-param":{"enabled":true,"testable":true},"hide-disabled-formats":{"enabled":true,"testable":true},"no-author-fix":{"enabled":true,"testable":true},"magazine-rollup":{"enabled":true,"testable":true},"stop-treating-ipad-like-mac":{"enabled":true,"testable":true},"handle-expired-account-token":{"enabled":true,"testable":true},"tls-soft-removal":{"enabled":true,"testable":true},"tls-warning-modal":{"enabled":false,"testable":false},"show-tls-version-warning":{"enabled":false,"testable":false},"use-lightning-lang-for-holds":{"enabled":true,"testable":true},"removeWindowsFromLibbyTout":{"enabled":true,"testable":true},"bisac-collection-filtering":{"enabled":true,"testable":true},"skip-the-line-message":{"enabled":false,"testable":true},"gac-cookie-on-dismiss":{"enabled":true,"testable":true},"close-dropdowns-on-esc":{"enabled":true,"testable":true},"safari-autocomplete-adjustment":{"enabled":true,"testable":true},"suspend-modal-data-adjustment":{"enabled":true,"testable":true},"allowIdcWhenExternalAuth":{"enabled":true,"testable":true},"sort-curated-list-carousels":{"enabled":true,"testable":true},"logTlsHeaders":{"enabled":true,"testable":true},"random-sort-curated-lists":{"enabled":true,"testable":true},"wrongLanguageForHolds":{"enabled":true,"testable":true},"streaming-update-message":{"enabled":true,"testable":true},"stopStealingCollectionTitle":{"enabled":true,"testable":true},"macmillanMessaging":{"enabled":false,"testable":false},"cleanupContextMenuToggle":{"enabled":true,"testable":true},"holdRedelivery":{"enabled":true,"testable":true},"dontHangUpOnError":{"enabled":true,"testable":true},"fixHtmlTagsInCopy":{"enabled":true,"testable":true},"idcDuplicateHandlerFix":{"enabled":true,"testable":true},"collectionsSeeAllLinkError":{"enabled":true,"testable":true},"declineNewIdcLogin":{"enabled":true,"testable":true},"logSpamCleanup":{"enabled":true,"testable":true},"movedSiteMessage":{"enabled":true,"testable":true},"mergedSite":{"enabled":true,"testable":true},"idc-only-ils":{"enabled":true,"testable":true},"luckyDayMenuLink":{"enabled":false,"testable":true},"pollForAutofill":{"enabled":true,"testable":true},"macOSAudiobookMessaging":{"enabled":true,"testable":true},"noAudiobooksForMacOS":{"enabled":true,"testable":true},"languageCookieBandaid":{"enabled":true,"testable":true},"authorityCookieBandaid":{"enabled":true,"testable":true},"ghostLogin":{"enabled":true,"testable":true},"OzoneAuthentication":{"enabled":true,"testable":true},"LuckyDay":{"enabled":true,"testable":true},"betterPatronState":{"enabled":false,"testable":true},"LHTNG-3387":{"enabled":true,"testable":true},"LHTNG-2863":{"enabled":true,"testable":true},"reciprocalLending":{"enabled":true,"testable":true},"internationalDemoMode":{"enabled":true,"testable":true},"showLibbyIntercept":{"enabled":false,"testable":true},"enhancedLibbyPromo":{"enabled":true,"testable":true},"getACard":{"enabled":true,"testable":true},"languagePref":{"enabled":false,"testable":true},"bannerIsSecondaryColor":{"enabled":true,"testable":true},"interestLevels":{"enabled":true,"testable":true},"gradeLevels":{"enabled":true,"testable":true},"lexileScores":{"enabled":true,"testable":true},"atosLevels":{"enabled":true,"testable":true},"readingHistory":{"enabled":true,"testable":true},"promoteLibby":{"enabled":true,"testable":true},"libbyTout":{"enabled":true,"testable":true},"backToMainCollectionLink":{"enabled":true,"testable":true},"content-holds":{"enabled":true,"testable":true},"autocomplete":{"enabled":true,"testable":true},"reverse-preview":{},"_softExpiration":"2025-02-18T00:00:56.083Z"}; window.OverDrive.languageSelection = "undefined"; window.OverDrive.supportArticles = {"ODAppSupport":"1481728-get-help-with-the-overdrive-app","LibbySupport":"2673906","recentUpdates":"2778185","havingTrouble":"1481730-having-trouble","newOverDrive":"2145737","howToReturn":"1481263","howToReturnWindows":"1481265","howToReturnAndroid":"1482571","howToReturnIOS":"1481551","howToReturnChromebook":"1775656","sessionExpiredError":"2847569","readAlongEbook":"1749249","noWindowsPhoneSupport":"2804623","ODAppNoPDFEbook":"1481649","aboutHistory":"2833477","deviceRestrictions":"2373846"}; window.OverDrive.showHistoryFeature = true; window.OverDrive.optimizeForChina = false; window.OverDrive.isGdprCountry = false; window.OverDrive.siteLogoUrl = 'https://thunder.cdn.overdrive.com/logo-resized/1357?1702054398'; window.OverDrive.showCookieSettingsModal = false; window.OverDrive.insufficientTls = false; window.OverDrive.showTlsWarningModal = false window.OverDrive.showTryLibbyModal = false; window.OverDrive.showGetACardModal = false; window.OverDrive.showAccessEndingModal = false; window.OverDrive.androidUrl = "https://play.google.com/store/apps/details?id=com.overdrive.mobile.android.libby&referrer=utm_source%3Dlightning%26utm_medium%3Dbanner%26utm_campaign%3Dlibby"; window.OverDrive.iOSUrl = "https://itunes.apple.com/us/app/libby-by-overdrive-labs/id1076402606?pt=211483&ct=lightning_banner&mt=8&utm_medium=lightning_banner&utm_source=lightning&utm_campaign=libby"; window.OverDrive.winUrl = "https://www.microsoft.com/en-us/p/libby-by-overdrive/9p6g3tcr4hzr?utm_medium=lightning_banner&utm_source=lightning&utm_campaign=libby&utm_content=microsoft_app_store_libby&activetab=pivot%3aoverviewtab"; window.OverDrive.hasPartnerLibraries = false; window.OverDrive.isVisitor = false; window.OverDrive.showOnlyAvailable = false; window.OverDrive.LuckyDayLendingPeriodsByFormat = {"ebook":7,"audiobook":7}; window.OverDrive.collectionId = 0 || 0; window.OverDrive.collectionType = ""; window.OverDrive.dyslexic = false; window.OverDrive.highContrast = false; window.OverDrive.cardSignUpLink = "http://www.torontopubliclibrary.ca/using-the-library/your-library-card/"; window.OverDrive.deviceIsMac = false; window.OverDrive.isWindows = true; window.OverDrive.isPreCatalinaMac = true; window.OverDrive.librarySupportUrl = "https://frontline.overdrive.com/?Lib=Toronto+Public+Library&CRID=1357&edge=true&Key=toronto"; window.OverDrive.librarySupportEmail = ""; window.OverDrive.isTolinoDevice = false; window.OverDrive.enabledPlatforms = ["lightning","libby"]; window.OverDrive.isKindle = false; window.OverDrive.isUnsupportedKindle = false; window.OverDrive.isAndroid710OrLower = false; window.OverDrive.hasKanopySubscription = true; window.OverDrive.kanopySignUpUrl = 'https://www.kanopy.com/en/torontopl/signup/auth/publiclibrary'; window.OverDrive.reactEmbedded = true; window.OverDrive.isChina = false; window.OverDrive.pageMetadata = ""; window.OverDrive.classifierIds = ""; window.OverDrive.tlsVersion = 'TLSv1.2'; window.OverDrive.tlsCipher = 'ECDHE-RSA-AES256-GCM-SHA384'; window.OverDrive.features.isEnabled = function(feature){ var feature = window.OverDrive.features[feature]; if (!feature) { return false; } if (feature.enabled) { return true; } if (window.OverDrive.tenant === 100501 || window.OverDrive.tenant === 100300 || (window.OverDrive.tenant >= 800000 && window.OverDrive.tenant < 900000) || window.OverDrive.allFeatures === '1') { return feature.testable; } }; window.OverDrive.isLocal = false; window.OverDrive.inApp = false; window.OverDrive.deviceType = 'desktop'; window.OverDrive.appVersion = ""; window.OverDrive.deepSearch = true; window.OverDrive.whitelistedMediaTypes = 'ebook,audiobook,magazine,video'; window.OverDrive._baseUrl = ''; window.OverDrive._locale = 'en'; </script> <style> img.broken { background-image: url(https://lightning.od-cdn.com/static/img/loading.17eca6dfe312e31db61216637ca7b440.gif) !important; } a.cdnFailLink { color: #00f; } a.cdnFailLink:hover, a.cdnFailLink:focus { color: #00f; text-decoration: underline; } .cdnFailContainer { display: none; text-align: center; margin: 15px 20px 0 20px; } </style> <script> var gaEventTriggered = false; function cdnError(elem) { // Need to wait for window.onload to get elements window.onload = function() { var src = elem.src || elem.href; // Show CDN failure copy document.getElementById('cdnfail').style.display = 'block'; // Hide site containers to not show unstyled/broken elements var containers = document.getElementsByClassName('js-hideOnCdnError'); for(var x = 0; x < containers.length; x++) { containers[x].style.display = 'none'; } // Only send 1 event to GA if (!gaEventTriggered && window.ga) { window.ga('send', 'event', { eventCategory: 'CDN', eventAction: 'Load Failure', eventLabel: src }); gaEventTriggered = true; } var requestData = { level: 'warn', message: 'A CDN resource has failed to load', fields: { src: src } } var request = new XMLHttpRequest(); request.open('POST', '/log', true); request.setRequestHeader('Content-Type', 'application/json'); request.send(JSON.stringify(requestData)); }; } </script> <script> // Bootstrap frontend media data window.OverDrive.titleCollection = {"reserveId":"5835e19d-b712-45b7-a092-63a7ca618c03","subjects":[{"id":"26","name":"Fiction"},{"id":"100","name":"Thriller"}],"bisacCodes":["FIC006000","FIC031000","FIC031010"],"bisac":[{"code":"FIC006000","description":"Fiction / Thrillers / Espionage"},{"code":"FIC031000","description":"Fiction / Thrillers / General"},{"code":"FIC031010","description":"Fiction / Thrillers / Crime"}],"levels":[],"creators":[{"id":2361874,"name":"Kotaro Isaka","role":"Author","sortName":"Isaka, Kotaro"},{"id":2329915,"name":"Brian Bergstrom","role":"Translator","sortName":"Bergstrom, Brian"},{"id":2466462,"name":"Pun Bandhu","role":"Narrator","sortName":"Bandhu, Pun"}],"languages":[{"id":"en","name":"English"}],"imprint":{"id":"198517","name":"Recorded Books"},"isBundledChild":false,"ratings":{"maturityLevel":{"id":"generalcontent","name":"General content"},"naughtyScore":{"id":"GeneralContent","name":"General content"}},"constraints":{"isDisneyEulaRequired":false},"reviewCounts":{"premium":0,"publisherSupplier":0},"isAvailable":false,"isPreReleaseTitle":false,"estimatedReleaseDate":"2024-11-20T05:00:00Z","sample":{"href":"https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com"},"publisher":{"id":"223131","name":"Recorded Books, Inc."},"series":"Assassins (Isaka)","description":"Bullet Train's hapless underworld operative and his handler are back in this thrilling new novel from internationally bestselling author Kotaro Isaka<br/>In Bullet Train, Ladybug was tasked by Maria with retrieving a suitcase from a high-speed train in Japan. The job did not go according to plan, to the delight of millions of readers and movie fans around the world.<br/>Will the unluckiest assassin in the world will find things easier this time around? <br/>All he has to do is deliver a birthday present to a guest in a luxury Tokyo hotel. It seems the simplest assignment, but by the time he leaves the guest's room one man is dead and more will soon follow. As events spiral out of control, it becomes clear that several different killers, with various missions, disguises, and signature techniques, are all staying in the hotel at the same time. And they're all particularly interested in a young woman with a photographic memory.<br/>Can Ladybug find out the truth of what's going on? And can he make it out alive?<br/>In this inventive follow-up to the international bestseller Bullet Train, Kotaro Isaka demonstrates his unparalleled gift for unique characters, gripping action, and surprising twists.","availableCopies":0,"ownedCopies":1,"luckyDayAvailableCopies":0,"luckyDayOwnedCopies":0,"holdsCount":5,"holdsRatio":5,"estimatedWaitDays":84,"isFastlane":false,"availabilityType":"normal","isRecommendableToLibrary":true,"isOwned":true,"isHoldable":true,"isAdvantageFiltered":false,"visitorEligible":false,"juvenileEligible":false,"youngAdultEligible":false,"contentAccessLevels":0,"classifications":{},"type":{"id":"audiobook","name":"Audiobook"},"covers":{"cover150Wide":{"href":"https://img3.od-cdn.com/ImageType-150/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG150.JPG","height":200,"width":150,"primaryColor":{"hex":"#EC1E44","rgb":{"red":236,"green":30,"blue":68}},"isPlaceholderImage":false},"cover300Wide":{"href":"https://img2.od-cdn.com/ImageType-400/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG400.JPG","height":400,"width":300,"primaryColor":{"hex":"#EC1E44","rgb":{"red":236,"green":30,"blue":68}},"isPlaceholderImage":false},"cover510Wide":{"href":"https://img2.od-cdn.com/ImageType-100/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG100.JPG","height":680,"width":510,"primaryColor":{"hex":"#EC1E44","rgb":{"red":236,"green":30,"blue":68}},"isPlaceholderImage":false}},"id":"11021582","firstCreatorName":"Kotaro Isaka","firstCreatorId":2361874,"firstCreatorSortName":"Isaka, Kotaro","title":"Hotel Lucky Seven","sortTitle":"Hotel Lucky Seven","starRating":3.5,"starRatingCount":2,"edition":"Unabridged","publishDate":"2024-11-19T00:00:00Z","publishDateText":"11/19/2024","formats":[{"identifiers":[{"type":"ISBN","value":"9798894861173"}],"rights":[],"fileSize":251203632,"onSaleDateUtc":"2024-11-20T05:00:00+00:00","duration":"08:43:20","hasAudioSynchronizedText":false,"isBundleParent":false,"isbn":"9798894861173","bundledContent":[],"sample":{"href":"https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com"},"fulfillmentType":"bifocal","id":"audiobook-overdrive","name":"OverDrive Listen audiobook"}],"publisherAccount":{"id":"4295","name":"Recorded Books, LLC"},"detailedSeries":{"seriesId":1931345,"seriesName":"Assassins (Isaka)","readingOrder":"4","rank":1},"sampleIsODR":false}; if (typeof Intl === 'undefined') { Intl = {}; } if (typeof Intl.NumberFormat === 'undefined') { Intl.NumberFormat = function (){}; Intl.NumberFormat.prototype.format = function (n) { return n; }; } </script> <style> .body--ntcMode { height: auto; min-height: 100%; } </style> <script src="https://lightning.od-cdn.com/static/vendor.bundle.min.f23b75dd56a005d9261e6d9ace1927a2.js" onerror="cdnError(this)"></script> <script src="https://lightning.od-cdn.com/static/holds.app.min.235cd2c8c01bd08feb1a4a7bdefd0afb.js" onerror="cdnError(this)"></script> <script id="inlineModernizrScript"> /*! modernizr 3.12.0 (Custom Build) | MIT * * https://modernizr.com/download/?-cssgrid_cssgridlegacy-setclasses !*/ !function(e,n,t,r){function o(e,n){return typeof e===n}function s(e,n){return!!~(""+e).indexOf(n)}function i(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):_?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function l(){var e=t.body;return e||(e=i(_?"svg":"body"),e.fake=!0),e}function a(e,n,r,o){var s,a,f,u,d="modernizr",c=i("div"),p=l();if(parseInt(r,10))for(;r--;)f=i("div"),f.id=o?o[r]:d+(r+1),c.appendChild(f);return s=i("style"),s.type="text/css",s.id="s"+d,(p.fake?p:c).appendChild(s),p.appendChild(c),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(t.createTextNode(e)),c.id=d,p.fake&&(p.style.background="",p.style.overflow="hidden",u=S.style.overflow,S.style.overflow="hidden",S.appendChild(p)),a=n(c,e),p.fake&&p.parentNode?(p.parentNode.removeChild(p),S.style.overflow=u,S.offsetHeight):c.parentNode.removeChild(c),!!a}function f(e){return e.replace(/([A-Z])/g,function(e,n){return"-"+n.toLowerCase()}).replace(/^ms-/,"-ms-")}function u(e,t,r){var o;if("getComputedStyle"in n){o=getComputedStyle.call(n,e,t);var s=n.console;if(null!==o)r&&(o=o.getPropertyValue(r));else if(s){var i=s.error?"error":"log";s[i].call(s,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else o=!t&&e.currentStyle&&e.currentStyle[r];return o}function d(e,t){var o=e.length;if("CSS"in n&&"supports"in n.CSS){for(;o--;)if(n.CSS.supports(f(e[o]),t))return!0;return!1}if("CSSSupportsRule"in n){for(var s=[];o--;)s.push("("+f(e[o])+":"+t+")");return s=s.join(" or "),a("@supports ("+s+") { #modernizr { position: absolute; } }",function(e){return"absolute"===u(e,null,"position")})}return r}function c(e){return e.replace(/([a-z])-([a-z])/g,function(e,n,t){return n+t.toUpperCase()}).replace(/^-/,"")}function p(e,n,t,l){function a(){u&&(delete z.style,delete z.modElem)}if(l=!o(l,"undefined")&&l,!o(t,"undefined")){var f=d(e,t);if(!o(f,"undefined"))return f}for(var u,p,m,y,g,h=["modernizr","tspan","samp"];!z.style&&h.length;)u=!0,z.modElem=i(h.shift()),z.style=z.modElem.style;for(m=e.length,p=0;p<m;p++)if(y=e[p],g=z.style[y],s(y,"-")&&(y=c(y)),z.style[y]!==r){if(l||o(t,"undefined"))return a(),"pfx"!==n||y;try{z.style[y]=t}catch(e){}if(z.style[y]!==g)return a(),"pfx"!==n||y}return a(),!1}function m(e,n){return function(){return e.apply(n,arguments)}}function y(e,n,t){var r;for(var s in e)if(e[s]in n)return!1===t?e[s]:(r=n[e[s]],o(r,"function")?m(r,t||n):r);return!1}function g(e,n,t,r,s){var i=e.charAt(0).toUpperCase()+e.slice(1),l=(e+" "+b.join(i+" ")+i).split(" ");return o(n,"string")||o(n,"undefined")?p(l,n,r,s):(l=(e+" "+E.join(i+" ")+i).split(" "),y(l,n,t))}function h(e,n,t){return g(e,r,r,n,t)}var v=[],C={_version:"3.12.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){v.push({name:e,fn:n,options:t})},addAsyncTest:function(e){v.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=C,Modernizr=new Modernizr;var w=[],S=t.documentElement,_="svg"===S.nodeName.toLowerCase(),x="Moz O ms Webkit",b=C._config.usePrefixes?x.split(" "):[];C._cssomPrefixes=b;var P={elem:i("modernizr")};Modernizr._q.push(function(){delete P.elem});var z={style:P.elem.style};Modernizr._q.unshift(function(){delete z.style});var E=C._config.usePrefixes?x.toLowerCase().split(" "):[];C._domPrefixes=E,C.testAllProps=g,C.testAllProps=h,Modernizr.addTest("cssgridlegacy",h("grid-columns","10px",!0)),Modernizr.addTest("cssgrid",h("grid-template-rows","none",!0)),function(){var e,n,t,r,s,i,l;for(var a in v)if(v.hasOwnProperty(a)){if(e=[],n=v[a],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(r=o(n.fn,"function")?n.fn():n.fn,s=0;s<e.length;s++)i=e[s],l=i.split("."),1===l.length?Modernizr[l[0]]=r:(Modernizr[l[0]]&&(!Modernizr[l[0]]||Modernizr[l[0]]instanceof Boolean)||(Modernizr[l[0]]=new Boolean(Modernizr[l[0]])),Modernizr[l[0]][l[1]]=r),w.push((r?"":"no-")+l.join("-"))}}(),function(e){var n=S.className,t=Modernizr._config.classPrefix||"";if(_&&(n=n.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+t+"no-js(\\s|$)");n=n.replace(r,"$1"+t+"js$2")}Modernizr._config.enableClasses&&(e.length>0&&(n+=" "+t+e.join(" "+t)),_?S.className.baseVal=n:S.className=n)}(w),delete C.addTest,delete C.addAsyncTest;for(var N=0;N<Modernizr._q.length;N++)Modernizr._q[N]();e.Modernizr=Modernizr}(window,window,document); </script> <script> 'use strict'; var __globalBootstrappingReady = false; var __reactComponentsReady = false; var __reactComponentsReadyEvent = undefined; document.addEventListener('react-components-ready', function (event) { __reactComponentsReady = true; __reactComponentsReadyEvent = event; }); document.addEventListener('global-bootstrapping-ready', function () { __globalBootstrappingReady = true; }); function onReactComponentsReady(callback) { function isReadyToRender() { return __reactComponentsReady && __globalBootstrappingReady && document.readyState !== 'loading'; } var callbackCalled = false; function handleReadyEvent() { if (!isReadyToRender() || callbackCalled) { return; } callbackCalled = true; callback(__reactComponentsReadyEvent); } handleReadyEvent(); document.addEventListener('readystatechange', function () { handleReadyEvent(); }); document.addEventListener('react-components-ready', function () { handleReadyEvent(); }); document.addEventListener('global-bootstrapping-ready', function() { handleReadyEvent(); }); } </script> <script src="https://lightning.od-cdn.com/static/react/static/js/main.69f81e08.js"></script> </head> <body class="body "> <noscript> <iframe src="//www.googletagmanager.com/ns.html?id=GTM-NRMQ5Q" height="0" width="0" class="GTM"> </iframe> </noscript> <script> var onLoadProps = { 'libraryId' : '243', 'libraryName' : 'Toronto Public Library', 'environment' : '', 'viewId' : '104672213', 'propertyId' : 'UA-34791607-28', 'roomName' : 'Main', 'sampleOnlyMode' : 'false' }; // LHTNG-2810 var currentRoom = false; if(currentRoom && currentRoom.name) { onLoadProps['roomName'] = currentRoom.englishName; } // LHTNG-2857 const collectionId = 0 || 0; if(collectionId > 0) { onLoadProps['listID'] = collectionId; onLoadProps['listType'] = ''; } const tlsVersion = 'TLSv1.2'; if(tlsVersion){ onLoadProps.tlsVersion = tlsVersion; } const tlsCipher = 'ECDHE-RSA-AES256-GCM-SHA384'; if(tlsCipher){ onLoadProps.tlsCipher = tlsCipher; } dataLayer = [onLoadProps]; (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NRMQ5Q'); </script> <script> function showAltLogoMobile() { $('.js-mobileLibraryLogo').hide(); $('.js-altLibraryLink').show().css('display', 'inline-block'); $('.icon-account').addClass('alt-logo'); } function showAltLogoDesktop() { $('h1#logo-desktop').hide(); $('.library-home-alt-link-desktop').removeClass('hideMeImportant'); } </script> <nav> <div class="MobileNav js-mobileNav"> <div class="row js-toggleRow"> <div class="columns small-12 MobileNav-logoContainer"><a href="/" aria-label="Toronto Public Library: OverDrive digital collection"> <img class="MobileNav-libraryLogo js-mobileLibraryLogo" alt="Logo for Toronto Public Library" src="https://thunder.cdn.overdrive.com/logo-resized/1357?1702054398"/> </a> <a class="MobileNav-altLibraryLink js-altLibraryLink u-hideMe" href="/" tabindex="0"> Toronto Public Library </a> </div> </div> <div class="row js-toggleRow"> <div class="columns small-12 MobileNav-searchContainer js-mobileSearchContainer"> <span class="MobileNav-searchIconContainer left js-mobileNavSearchIcon"> <i class="icon-search-nav js-doQuickSearch MobileNav-searchIcon"></i> </span> <h2 tabindex="-1" class="offscreen">Search</h2> <form class="js-quickSearchForm js-mobileSearchForm MobileNav-searchForm is-unexpanded" id="search-form-mobile" autocomplete="off" method="get" action="/search"> <label class="hideMeImportant" for="nav-search-mobile">Search</label> <input type="text" maxlength="100" name="query" id="nav-search-mobile" autocomplete="off" data-search="nav-search-mobile" placeholder="Search" title="Search" class="js-quickSearchInput js-mobileSearchInput MobileNav-searchInput" value="" aria-haspopup="true" /> </form> <span class="right js-searchControlContainer u-hideMe MobileNav-searchControlContainer"> <i class="icon-clear js-clearMobileSearch MobileNav-clearSearchIcon" tabindex="0" aria-label="Clear search"></i> <a class="js-doQuickSearch u-allCaps MobileNav-submitSearch" href="javascript:void(0)" tabindex="0">Search</a> </span> <span class="right MobileNav-iconContainer js-mobileNavIconContainer"> <a href="/account/loans" aria-label="Loans" tabindex="0" class="MobileNav-bookshelfLink"> <i class="icon-bookshelf MobileNav-bookshelfIcon" aria-hidden="true"></i> </a> <h2 tabindex="-1" class="offscreen">Browse menu</h2> <button data-toggle="mobile-nav-foundation-dropdown" class="js-mobileMenu MobileNav-accountMenu" id="hamburger" aria-expanded="false" aria-label="Browse menu" aria-role="button" title="Browse menu" tabindex="0"> <i class="icon-hamburger MobileNav-hamburgerIcon" aria-hidden="true"></i> </button> </span> </div> </div> <div class="js-quickSearchAutocompletionsMobile"></div> <div class="MobileNav-advancedSearchContainer js-advancedSearchContainer row u-hideMe js-toggleRow"> <a class="MobileNav-advancedSearchText js-advancedSearchLink" id="mobileAdvancedSearch" href="/advanced-search" tabindex="0" aria-live="polite" aria-label="Advanced Search"> <div class="small-12 columns MobileNav-advancedSearch"> Advanced </div> </a> </div><div class="MobileNav-advantageTout js-advantageTout row js-toggleRow u-hideMe"> <div class="columns small-12"> <a class="MobileNav-closeAdvantageTout right js-closeAdvantageTout" href="javascript:void(0)" aria-label="Close" role="button" tabindex="0">×</a> <p class="MobileNav-advantageToutText text-center"> More titles and copies may be available to you. Sign in to see the full collection. </p> <div class="MobileNav-advantageToutSigninContainer text-center"> <a href="/account/sign-in?forward=%2Fmedia%2F11021582" class="u-allCaps MobileNav-advantageToutSignin" tabindex="0" aria-label="More titles and copies may be available to you. Sign in to see the full collection."> Sign in </a> </div> </div> </div> </div> </nav> <div class="nav-container Nav js-nav" aria-hidden="false"> <div class="row"> <nav class="top-bar unexpanded js-top-bar" data-topbar data-options="mobile_show_parent_link: false"> <div class="white-cover"></div> <section class="top-bar-section"> <div class="DesktopNavLinks Nav-topRightLinks"> <span class="js-languageSelection Nav-topRightLink"> <a class="DesktopNavLinks-link DesktopNavLinks-languageDropdown secondary-color-hover" tabindex="0" data-dropdown="language-dropdown" href="#" aria-controls="language-dropdown" aria-expanded="false" role="button" id="language-dropdown-button"> <i class="icon-globe DesktopNavLinks-languageDropdown-globe" aria-hidden="true"></i> <span class="js-langDisplayText">Language</span> <i class="icon-down-arrow DesktopNavLinks-languageDropdown-arrow" aria-hidden="true"></i> </a> <ul class="f-dropdown DesktopNavLinks-languageList" id="language-dropdown" data-dropdown-content aria-hidden="true" role="list" aria-haspopup="true" tabindex="-1"> <li role="listitem" class="DesktopNavLinks-language"><a tabindex="-1" aria-label="English" class="DesktopNavLinks-language js-languageLink " lang="en" data-code="en">English</a></li> <li role="listitem" class="DesktopNavLinks-language"><a tabindex="-1" aria-label="Fran莽ais (Canada)" class="DesktopNavLinks-language js-languageLink " lang="fr-CA" data-code="fr-CA">Fran莽ais (Canada)</a></li> </ul> </span> <a target="_blank" rel="noreferrer" href="https://help.overdrive.com?Key=toronto&Sup=https%3A%2F%2Ffrontline.overdrive.com%2F%3FLib%3DToronto%2BPublic%2BLibrary%26CRID%3D1357%26edge%3Dtrue%26Key%3Dtoronto&edge=true" class="DesktopNavLinks-link Nav-topRightLink secondary-color-hover">Help</a> <a href="http://www.torontopubliclibrary.ca/" target="_blank" rel="noreferrer" class="DesktopNavLinks-link Nav-topRightLink secondary-color-hover">TPL home</a> </div> <div tabindex="-1" class="Nav-logoWrapper--desktop" id="logo-desktop"><a aria-label="Toronto Public Library: OverDrive digital collection" href="/"> <img onerror="showAltLogoDesktop();" class="Nav-logo--desktop" tabindex="-1" aria-hidden="true" alt="Logo for Toronto Public Library" src="https://thunder.cdn.overdrive.com/logo-resized/1357?1702054398"/> </a> </div> <a tabindex="-1" class="library-home-alt-link-desktop Nav-logoWrapper--desktop hideMeImportant" href="/"><span class="library-home-alt-text Nav-logo--desktop Nav-altLogo no-logo">Toronto Public Library</span></a> <h2 class="offscreen" tabindex="-1">Browse options</h2> <!-- Left Nav Section --> <ul role="navigation" class="left desktop hide-for-small-only Nav-bottomLeftLinksWrapper"> <li tabindex="-1"> <a tabindex="0" href="/browse" class="main-level" data-action="main-navigation" nav-name="Subjects"> Subjects </a> </li><li tabindex="-1" class="Nav-collectionsDropLink"> <a tabindex="0" class="main-level Nav-collectionsLink" data-dropdown="drop-collections" aria-controls="drop-collections" aria-expanded="false" data-action="main-navigation" nav-name="Collections" role="button"> Collections <i class="icon-down-arrow Nav-collectionsDropArrow" tabindex="-1" aria-hidden="true"></i> </a> </li><li tabindex="-1"> <a tabindex="0" href="/library/kids" aria-label="" class="main-level" data-action="main-navigation" nav-name="Kids"> Kids </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/teens" aria-label="" class="main-level" data-action="main-navigation" nav-name="Teens"> Teens </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/availble-now" aria-label="" class="main-level" data-action="main-navigation" nav-name="Available Now"> Available Now </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/magazines" aria-label="" class="main-level" data-action="main-navigation" nav-name="Magazines"> Magazines </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/audiobooks" aria-label="" class="main-level" data-action="main-navigation" nav-name="eAudio"> eAudio </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/bestbooks" aria-label="" class="main-level" data-action="main-navigation" nav-name="Best Books"> Best Books </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/world-languages" aria-label="" class="main-level" data-action="main-navigation" nav-name="World Languages"> World Languages </a> </li> <ul data-equalizer id="drop-collections" class="drop content f-dropdown dynamic Nav-collectionsDropdown" aria-hidden="true" tabindex="-1"> <div class="large-11 medium-12 columns large-centered medium-centered"> <ul class="large-block-grid-5 medium-block-grid-5"><li> <h3 tabindex="-1" class="u-allCaps Nav-collectionsDropHeading">Special</h3> <ul><li tabindex="-1"> <a tabindex="-1" href="/library/kids" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Kids </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/teens" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Teens </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/availble-now" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Available Now </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/magazines" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Magazines </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/audiobooks" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> eAudio </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/bestbooks" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Best Books </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/world-languages" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> World Languages </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/read-canadian" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Read Canadian </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/blm" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Black Lives Matter </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/indigenous-peoples" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Indigenous Peoples Collection </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/lgbtqia" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Read with Pride </a> </li> <li tabindex="-1"> <a tabindex="-1" href="/library/adult-literacy" aria-label="" class="featured-collection-item Nav-featuredCollectionItem"> Adult Literacy </a> </li> </ul> </li> <li> <h3 tabindex="-1" class="u-allCaps Nav-collectionsDropHeading">EBOOK FICTION</h3> <ul> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80450" tabindex="-1"><span class="secondary-border-color">All Fiction</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/88541" tabindex="-1"><span class="secondary-border-color">Available Now</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80451" tabindex="-1"><span class="secondary-border-color">Romance</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80452" tabindex="-1"><span class="secondary-border-color">Mystery & Thrillers</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80453" tabindex="-1"><span class="secondary-border-color">Literature</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80456" tabindex="-1"><span class="secondary-border-color">Historical Fiction</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/111282" tabindex="-1"><span class="secondary-border-color">Hard SciFi</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80454" tabindex="-1"><span class="secondary-border-color">Science Fiction & Fantasy</span></a></li> <li> <a class="view-all-collections Nav-featuredCollectionItem secondary-color primary-color-hover contrast" href="/collections/featured/1" tabindex="-1"> <span class="secondary-border-color"> See all <i class="icon-forward-arrow chevron secondary-color primary-color-hover" aria-hidden="true"></i> </span> </a> </li> </ul> </li> <li> <h3 tabindex="-1" class="u-allCaps Nav-collectionsDropHeading">EBOOK NONFICTION</h3> <ul> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80587" tabindex="-1"><span class="secondary-border-color">All Nonfiction</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/88542" tabindex="-1"><span class="secondary-border-color">Available Now</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80588" tabindex="-1"><span class="secondary-border-color">Biography</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80599" tabindex="-1"><span class="secondary-border-color">History</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80600" tabindex="-1"><span class="secondary-border-color">Cooking & Food</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80601" tabindex="-1"><span class="secondary-border-color">Business</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80607" tabindex="-1"><span class="secondary-border-color">Self-Improvement</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/80608" tabindex="-1"><span class="secondary-border-color">Health & Fitness</span></a></li> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/1072518" tabindex="-1"><span class="secondary-border-color">Popular Science</span></a></li> <li> <a class="view-all-collections Nav-featuredCollectionItem secondary-color primary-color-hover contrast" href="/collections/featured/2" tabindex="-1"> <span class="secondary-border-color"> See all <i class="icon-forward-arrow chevron secondary-color primary-color-hover" aria-hidden="true"></i> </span> </a> </li> </ul> </li> <li> <h3 tabindex="-1" class="u-allCaps Nav-collectionsDropHeading">AUDIOBOOKS</h3> <ul> <li><a class="featured-collection-item Nav-featuredCollectionItem" href="/collection/1466254" tabindex="-1"><span class="secondary-border-color">All Audiobooks</span></a></li> <li> <a class="view-all-collections Nav-featuredCollectionItem secondary-color primary-color-hover contrast" href="/collections/featured/3" tabindex="-1"> <span class="secondary-border-color"> See all <i class="icon-forward-arrow chevron secondary-color primary-color-hover" aria-hidden="true"></i> </span> </a> </li> </ul> </li> <li> <h3 tabindex="-1" class="u-allCaps Nav-collectionsDropHeading">Videos</h3> <div class="kanopy-menu-ad-container"></div> </li> </ul> </div> </ul> </ul><!-- Right Nav Section --> <h2 class="offscreen" tabindex="-1">Search and account</h2> <ul role="presentation" class="right desktop hide-for-small-only Nav-bottomRightLinks"> <li class="Nav-searchIconContainer"> <a role="button" href="javascript:void(0)" class="secondary-color-hover js-toggleSearch" aria-label="Search"> <i class="icon-search-nav Nav-searchIcon--desktop secondary-color-hover" aria-hidden="true"></i><span class="Nav-searchText">Search</span> </a> </li> <li> <a href="/account/loans" class="secondary-color-hover shelf-icon-container" aria-label="Loans"> <i class="icon-bookshelf Nav-bookshelfIcon--desktop secondary-color-hover" aria-hidden="true"></i> </a> </li><li role="presentation" class="Nav-signInWrapper"> <a href="/account/sign-in?forward=%2Fmedia%2F11021582" class="Nav-signIn button secondary secondary-background" tabindex="0">Sign in</a> <!-- TODO: refactor advantage tout so that it's not a dropdown linked directly to the sign-in button (confusing screen-readers) --> <a data-dropdown="dropAccount" aria-haspopup="true" style="top: -1rem; height:0" data-options="align:bottom" class="signed-out js-account-menu-link Nav-signIn button secondary secondary-background invisible" aria-controls="dropAccount" aria-expanded="false" href="#" id="account-holder-name">Sign in</a> <div id="dropAccount" data-dropdown-content class="f-dropdown large content Nav-advantageTout" aria-hidden="true" tabindex="-1"> <p tabindex="0" class="advantage-tout-text"> More titles and copies may be available to you. Sign in to see the full collection. </p> <div class="text-center"> <a href="/account/sign-in?forward=%2Fmedia%2F11021582" class="sign-in contrast u-allCaps Nav-advantageToutSignIn button" tabindex="0"> Sign in </a> </div> <a class="close-advantage-tout contrast js-closeAdvantageTout" href="javascript:void(0)" aria-label="Close" role="button" tabindex="0">×</a> </div> </li> </ul> </section> </nav><div class="row dropdown-pane" id="mobile-nav-foundation-dropdown" data-dropdown data-menu="main"> <div class="mobile-nav-wrapper"> <div class="mobile-nav-menu"> <ul class="accordion top-nav" data-accordion> <li> <div class="help-mobile"> <a class="signed-out js-account-menu-link Nav-signIn button secondary secondary-background" href="/account/sign-in?forward=%2Fmedia%2F11021582" > Sign in </a> </div> </li> <li> <div class="help-mobile"> <a class="contrast" href="/browse" data-action="main-navigation" nav-name="Subjects">Subjects</a> </div> </li><li class="accordion-navigation top-nav" data-sub-nav="featured-collections"> <a href="#featured-collections" role="tab" id="featured-collections-heading" aria-controls="featured-collections" class="contrast nav-panel-name">Collections</a><span class="nav-panel-icon" tabindex="-1"><i class="icon-forward-arrow panel-arrow right chevron" aria-hidden="true" data-action="main-navigation" nav-name="Collections"></i></span> <div id="featured-collections" class="content" role="tabpanel" aria-labelledby="featured-collections-heading"> <hr/> <ul> <li class="nav-heading" tabindex="0">EBOOK FICTION</li> <li><a href="/collection/80450" class="js-link"><span>All Fiction</span></a></li> <li><a href="/collection/88541" class="js-link"><span>Available Now</span></a></li> <li><a href="/collection/80451" class="js-link"><span>Romance</span></a></li> <li><a href="/collection/80452" class="js-link"><span>Mystery & Thrillers</span></a></li> <li><a href="/collection/80453" class="js-link"><span>Literature</span></a></li> <li><a href="/collection/80456" class="js-link"><span>Historical Fiction</span></a></li> <li><a href="/collection/111282" class="js-link"><span>Hard SciFi</span></a></li> <li><a href="/collection/80454" class="js-link"><span>Science Fiction & Fantasy</span></a></li> <li><a href="/collections/featured/1" class="secondary-color primary-color-hover collection-link"><span><b>See all<i class="icon-forward-arrow chevron secondary-color" aria-hidden="true"></i></b></span></a></li> </ul> <hr/> <ul> <li class="nav-heading" tabindex="0">EBOOK NONFICTION</li> <li><a href="/collection/80587" class="js-link"><span>All Nonfiction</span></a></li> <li><a href="/collection/88542" class="js-link"><span>Available Now</span></a></li> <li><a href="/collection/80588" class="js-link"><span>Biography</span></a></li> <li><a href="/collection/80599" class="js-link"><span>History</span></a></li> <li><a href="/collection/80600" class="js-link"><span>Cooking & Food</span></a></li> <li><a href="/collection/80601" class="js-link"><span>Business</span></a></li> <li><a href="/collection/80607" class="js-link"><span>Self-Improvement</span></a></li> <li><a href="/collection/80608" class="js-link"><span>Health & Fitness</span></a></li> <li><a href="/collection/1072518" class="js-link"><span>Popular Science</span></a></li> <li><a href="/collections/featured/2" class="secondary-color primary-color-hover collection-link"><span><b>See all<i class="icon-forward-arrow chevron secondary-color" aria-hidden="true"></i></b></span></a></li> </ul> <hr/> <ul> <li class="nav-heading" tabindex="0">AUDIOBOOKS</li> <li><a href="/collection/1466254" class="js-link"><span>All Audiobooks</span></a></li> <li><a href="/collections/featured/3" class="secondary-color primary-color-hover collection-link"><span><b>See all<i class="icon-forward-arrow chevron secondary-color" aria-hidden="true"></i></b></span></a></li> </ul> <hr/> <ul> <li class="nav-heading u-allCaps" tabindex="0">Videos</li> <div class="kanopy-menu-ad-container"></div> </ul> </div> </li> <li tabindex="-1"> <a tabindex="0" href="/library/kids" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Kids"> Kids </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/teens" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Teens"> Teens </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/availble-now" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Available Now"> Available Now </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/magazines" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Magazines"> Magazines </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/audiobooks" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="eAudio"> eAudio </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/bestbooks" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Best Books"> Best Books </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/world-languages" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="World Languages"> World Languages </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/read-canadian" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Read Canadian"> Read Canadian </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/blm" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Black Lives Matter"> Black Lives Matter </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/indigenous-peoples" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Indigenous Peoples Collection"> Indigenous Peoples Collection </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/lgbtqia" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Read with Pride"> Read with Pride </a> </li> <li tabindex="-1"> <a tabindex="0" href="/library/adult-literacy" aria-label="" class="contrast nav-panel-name" data-action="main-navigation" nav-name="Adult Literacy "> Adult Literacy </a> </li> <li> <div class="help-mobile"> <a class="text-center contrast" target="_blank" rel="noreferrer" href="https://help.overdrive.com?Key=toronto&Sup=https%3A%2F%2Ffrontline.overdrive.com%2F%3FLib%3DToronto%2BPublic%2BLibrary%26CRID%3D1357%26edge%3Dtrue%26Key%3Dtoronto&edge=true">Help</a> </div> </li> <li> <div class="help-mobile"> <a href="http://www.torontopubliclibrary.ca/" target="_blank" rel="noreferrer" class="contrast">TPL home</a> </div> </li><li class="accordion-navigation top-nav js-languageMobileSelection" data-sub-nav="language-dropdown-mobile"> <a href="#language-nav" role="tab" id="language-accordion-heading" aria-controls="language-dropdown-mobile" class="contrast nav-panel-name" aria-label="Languages"><i class="icon-globe mobile-lang-globe" aria-hidden="true"></i>Language</a><span class="nav-panel-icon" tabindex="-1"><i class="icon-forward-arrow panel-arrow right chevron" aria-hidden="true"></i></span> <div id="language-dropdown-mobile" role="tabpanel" aria-labelledby="language-accordion-heading" class="content"> <ul><li role="listitem" class="js-languageLink languageLink" data-code="en" tabindex="0" aria-label="English">English</li> <li role="listitem" class="js-languageLink languageLink" data-code="fr-CA" tabindex="0" aria-label="Fran莽ais (Canada)">Fran莽ais (Canada)</li> </ul> </div> </li></ul> </div> </div> </div></div><div class="row js-nav-search-drop js-desktopSearchContainer hideMe"> <hr class="Nav-searchSeparator"/> <div class="large-12 columns"> <div class="Nav-searchDrop"> <div class="search-bar Nav-searchBar"> <form class="js-quickSearchDesktop js-quickSearchForm" id="search-form" method="get" action="/search" autocomplete="off"> <label class="hideMe" id="search-label" for="nav-search">Search</label> <input tabindex="0" type="text" maxlength="100" name="query" id="nav-search" autocomplete="off" data-search="nav-search" title="Search" aria-labelledby="search-label" class="js-quickSearchInput search-input Nav-searchInput" value="" placeholder="Search" /> <div class="Nav-searchButtonContainer"> <button tabindex="0" class="js-doQuickSearch fake-button right" aria-label="Submit search."> <span tabindex="-1" class="desktop-search Nav-searchButton right"> <i class="icon-search-nav Nav-searchIcon--desktop is-submit secondary-color-hover" aria-hidden="true"></i> </span> </button> <i class="icon-clear js-clearSearch Nav-clearSearch right hideMe"></i> </div> <div class="js-quickSearchAutocompletionsDesktop"></div> <a class="js-desktopAdvancedSearch secondary-color-hover help-link-desktop advanced-search-desktop Nav-advancedSearch right" tabindex="0" href="/advanced-search">Advanced<i class="icon-forward-arrow Nav-advancedSearchCaret right"></i></a> </form> </div> </div> </div> </div></div> <div class="toast-placeholder js-toastPlaceholder"></div> <div class="js-toaster"></div> <div id="sample-only-banner"></div> <div id="cdnfail" class="cdnFailContainer">Error loading page.<br/>Try refreshing the page. If that doesn't work, there may be a network issue, and you can use our <a href="/selftest" class="cdnFailLink">self test page</a> to see what's preventing the page from loading.<br/><a href="https://help.overdrive.com/customer/portal/articles/2663201" class="cdnFailLink">Learn more about possible network issues</a> or <a href="https://help.overdrive.com/customer/en/portal/articles/1613698" class="cdnFailLink">contact support</a> for more help.</div> <main id="mainContent" class="container js-hideOnCdnError"> <input type="hidden" id="csrf" name="_csrf" value="UI2Gt8Mi-0Hyl4NMhw2nH_wsji-AMcOggnII"> <div role="dialog" id="sample-dynamic-modal" class="sample-modal reveal-modal large" data-reveal aria-hidden="true" role="dialog"> <div class="modal-header"> <h2 data-first-focus tabindex="0" class="primary-color modal-title js-first-focus" data-sample-title></h2> <a class="close-reveal-modal" tabindex="0" role="button" aria-label="Close">×</a> </div> <div class="modal-container"> <iframe id="sample-dynamic-iframe" data-src class="js-last-focus"></iframe> </div> </div> <div class="title-header-container Details" aria-hidden="false" id="main"> <div class="title-header-overlay"> <div class="row"> <div class="medium-3 below-980-4 below-600-12 columns cover-column"> <div class="CoverImageContainer" style="background-color: #EC1E44"> <a href="#" class="js-details-cover-sample" data-href="https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com" data-media-id="11021582" data-title="Hotel Lucky Seven" data-type="audiobook"> <img aria-label="Title details for Hotel Lucky Seven by Kotaro Isaka - Wait list Audiobook" class="large-title js-details-cover-image " src="https://img2.od-cdn.com/ImageType-100/1694-1/{5835E19D-B712-45B7-A092-63A7CA618C03}IMG100.JPG" alt="Title details for Hotel Lucky Seven by Kotaro Isaka - Wait list" style="background-color: #EC1E44"/> </a> </div> </div> <div class="medium-6 below-980-8 below-600-full-width below-600-text-center columns title-column-top"> <div class="TitleDetailsHeading"> <h1 class="TitleDetailsHeading-title " lang="en" aria-label="Title details for Hotel Lucky Seven by Kotaro Isaka - Wait list" tabindex="-1">Hotel Lucky Seven</h1> <div class="TitleSeries"></div> <div class="TitleDetailsHeading-creator"> by <a aria-label="Search by author, Kotaro Isaka" lang="en" href="/search/creatorId?query=2361874&sortBy=newlyadded" class="TitleDetailsHeading-creatorLink secondary-color">Kotaro Isaka</a> <br/> <a aria-label="Search by author, Brian Bergstrom" lang="en" href="/search/creatorId?query=2329915&sortBy=newlyadded" class="TitleDetailsHeading-creatorLink is-second secondary-color"> Brian Bergstrom </a> </div> <span class="TitleDetailsHeading-formatBadge"> <i class="icon-audiobook TitleDetailsHeading-formatBadgeIcon"></i><span class="u-allCaps">Audiobook</span> </span> </div> <div class="js-starRatingsContainer"></div> <div class="show-for-600-up js-copiesAvailableContainer" style="overflow: hidden"> </div> <div class="show-for-600-down js-copiesAvailableContainer-LuckyDay" style="overflow: hidden"> </div> <div class="LuckyDayCantPlaceHoldContainer"></div> <div class="action-button-top"> <div class="Details-buttonContainer"> <span class="TitleAction"> <a tabindex="0" href="#" class="TitleActionButton button radius is-button js-placeholder secondary" disabled="disabled"> <div class="spinner"></div> </a> </span> <a href="#" class="button radius big sample contrast below-600-full-width desktop u-allCaps sample-button Button-sampleButton js-sampleButton" data-href="https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com" data-media-id="11021582" data-title="Hotel Lucky Seven" data-type="audiobook" role="button"> Listen to a sample </a> <a href="https://samples.overdrive.com/?crid=5835e19d-b712-45b7-a092-63a7ca618c03&.epub-sample.overdrive.com" class="button radius big sample contrast below-600-full-width mobile u-allCaps sample-button Button-sampleButton no-auth" target="_blank" rel="noreferrer"> Listen to a sample </a> </div> <div class="wishlist-container"></div> <div class="ReadingHistoryButton-container"></div> <div class="row small-centered show-for-980-up"> <div class="small-12 columns TitleDetailsDescription" data-title-description-container> <ul class="TitleDetailsDescription-infoTabs show-for-980-up"> <li role="presentation" class="TitleDetailsDescription-infoTab is-active js-description-tab" onclick="window.infoTab('description')"> <h2 class="TitleDetailsDescription-infoTabLink" tabindex="0" id="description" aria-selected="true" aria-controls="title-description">Description</h2> </li> <li role="presentation" class="TitleDetailsDescription-infoTab js-creators-tab" onclick="window.infoTab('creators')"> <h2 class="TitleDetailsDescription-infoTabLink" tabindex="-1" id="creators" aria-selected="true" aria-controls="title-creators">Creators</h2> </li> <li role="presentation" class="TitleDetailsDescription-infoTab js-details-tab" onclick="window.infoTab('format-details')"> <h2 class="TitleDetailsDescription-infoTabLink" tabindex="-1" id="format-details" aria-selected="true" aria-controls="title-format-details">Details</h2> </li> </ul> <div class="margin-top-medium"> <div role="tabpanel" aria-labelledby="description" id="title-description" class="js-title-description-container"> <article tabindex="0" class="TitleDetailsDescription-description is-short js-title-description" lang="en"> Bullet Train's hapless underworld operative and his handler are back in this thrilling new novel from internationally bestselling author Kotaro Isaka<br/>In Bullet Train, Ladybug was tasked by Maria with retrieving a suitcase from a high-speed train in Japan. The job did not go according to plan, to the delight of millions of readers and movie fans around the world.<br/>Will the unluckiest assassin in the world will find things easier this time around? <br/>All he has to do is deliver a birthday present to a guest in a luxury Tokyo hotel. It seems the simplest assignment, but by the time he leaves the guest's room one man is dead and more will soon follow. As events spiral out of control, it becomes clear that several different killers, with various missions, disguises, and signature techniques, are all staying in the hotel at the same time. And they're all particularly interested in a young woman with a photographic memory.<br/>Can Ladybug find out the truth of what's going on? And can he make it out alive?<br/>In this inventive follow-up to the international bestseller Bullet Train, Kotaro Isaka demonstrates his unparalleled gift for unique characters, gripping action, and surprising twists. </article> <hr class="more"/> <img alt="Expand title description text" class="TitleDetailsDescription-descriptionArrow js-description-arrow is-unexpanded" src="https://lightning.od-cdn.com/static/img/more.adbfa74d06226b5aa45bbeae240ad19f.png" /> </div> <div role="tabpanel" aria-labelledby="creators" class="js-title-creators u-hideMe" id="title-creators"> <ul class="TitleDetailsDescription-creatorList"> <li> <a class="TitleDetailsDescription-creatorLink secondary-color" role="link" title="Author" aria-label="Search by author, Kotaro Isaka" href="/search/creatorId?query=2361874&sortBy=newlyadded">Kotaro Isaka</a> - Author </li> <li> <a class="TitleDetailsDescription-creatorLink secondary-color" role="link" title="Translator" aria-label="Search by author, Brian Bergstrom" href="/search/creatorId?query=2329915&sortBy=newlyadded">Brian Bergstrom</a> - Translator </li> <li> <a class="TitleDetailsDescription-creatorLink secondary-color" role="link" title="Narrator" aria-label="Search by author, Pun Bandhu" href="/search/creatorId?query=2466462&sortBy=newlyadded">Pun Bandhu</a> - Narrator </li> </ul> </div> <div role="tabpanel" aria-labelledby="format-details" class="TitleDetailsDescription-detailsPanel js-format-details u-hideMe" id="title-format-details"> <article> <span tabindex="0" aria-label="Search by series, Assassins (Isaka)"> <b>Series:</b> <a class="TitleDetailsDescription-seriesLink secondary-color" lang="en" href="/search/seriesId?query=1931345&sortBy=readingOrder">Assassins (Isaka)</a> </span> <span tabindex="0" aria-label="Search by publisher, Recorded Books, Inc."> <b>Publisher:</b> <a class="TitleDetailsDescription-creatorLink secondary-color" lang="en" href="/search/publisherId?query=223131&sortBy=newlyadded">Recorded Books, Inc.</a> </span> <span tabindex="0" aria-label="Edition: Unabridged"><b>Edition:</b> Unabridged</span> <hr/> <h2 tabindex="0" role="heading" aria-label="OverDrive Listen audiobook" class="header-xxsmall bold">OverDrive Listen audiobook</h2> <ul> <li role="listitem" tabindex="0" aria-label="ISBN: 9798894861173"> <b>ISBN:</b> 9798894861173 </li> <li role="listitem" tabindex="0" aria-label="File size: 251204 KB"> <b>File size:</b> 251204 KB </li> <li role="listitem" tabindex="0" aria-label="Release date: November 20, 2024"> <b>Release date:</b> November 20, 2024 </li> <li role="listitem" tabindex="0" aria-label="Duration: 08:43:20"> <b>Duration:</b> 08:43:20 </li> </ul> <hr/> </article> </div> </div> </div> </div> </div> <div class="show-for-600-down js-copiesAvailableContainer"> </div> </div> <div class="TitleDetailsSidebar show-for-980-up"> <div class="large-12 columns"> <h2 tabindex="-1" class="TitleDetailsSidebar-sectionHeader u-allCaps">Formats</h2> <p class="TitleDetailsSidebar-detailsContainer"> <span tabindex="0" aria-label="OverDrive Listen audiobook">OverDrive Listen audiobook</span> <br/> </p> </div> <div class="large-12 columns"> <h2 tabindex="-1" class="TitleDetailsSidebar-sectionHeader u-allCaps">subjects</h2> <p class="TitleDetailsSidebar-detailsContainer--subjects"> <a role="button" class="button outline round TitleDetailsSidebar-subjectButton u-allCaps" href="/search?subject=26">Fiction</a> <a role="button" class="button outline round TitleDetailsSidebar-subjectButton u-allCaps" href="/search?subject=100">Thriller</a> </p> </div> <div class="large-12 columns"> <h2 tabindex="-1" class="TitleDetailsSidebar-sectionHeader u-allCaps">Languages</h2> <p class="TitleDetailsSidebar-detailsContainer"> <span tabindex="0" aria-label="English">English</span><br/> </p> </div> </div> </div> </div> </div> <div class="row small-centered show-for-980-down"> <div class="small-12 columns TitleDetailsDescription" data-title-description-container> <div class="margin-top-medium"> <div class="js-title-description-container" id="title-description"> <article tabindex="0" class="TitleDetailsDescription-description is-short js-title-description" lang="en"> Bullet Train's hapless underworld operative and his handler are back in this thrilling new novel from internationally bestselling author Kotaro Isaka<br/>In Bullet Train, Ladybug was tasked by Maria with retrieving a suitcase from a high-speed train in Japan. The job did not go according to plan, to the delight of millions of readers and movie fans around the world.<br/>Will the unluckiest assassin in the world will find things easier this time around? <br/>All he has to do is deliver a birthday present to a guest in a luxury Tokyo hotel. It seems the simplest assignment, but by the time he leaves the guest's room one man is dead and more will soon follow. As events spiral out of control, it becomes clear that several different killers, with various missions, disguises, and signature techniques, are all staying in the hotel at the same time. And they're all particularly interested in a young woman with a photographic memory.<br/>Can Ladybug find out the truth of what's going on? And can he make it out alive?<br/>In this inventive follow-up to the international bestseller Bullet Train, Kotaro Isaka demonstrates his unparalleled gift for unique characters, gripping action, and surprising twists. </article> <hr class="more"/> <img alt="Expand title description text" class="TitleDetailsDescription-descriptionArrow js-description-arrow is-unexpanded" src="https://lightning.od-cdn.com/static/img/more.adbfa74d06226b5aa45bbeae240ad19f.png" /> </div> </div> </div> </div> <div class="row small-centered"> <div class="large-12 show-for-980-down margin-top-small columns"> <section id="title-subjects-mobile"> <center> <a class="button outline round subject u-allCaps" href="/search?subject=26">Fiction</a> <a class="button outline round subject u-allCaps" href="/search?subject=100">Thriller</a> </center> </section> </div> </div> <div class="row small-centered show-for-980-down"> <div class="large-12 show-for-medium-down columns"> <ul class="TitleDetailsAccordion accordion js-accordion-details" data-accordion> <li class="TitleDetailsAccordion-section accordion-navigation js-accordion-nav"> <a href="#details-panel" class="TitleDetailsAccordion-panel"> Details <i class="icon-forward-arrow TitleDetailsAccordion-panelArrow u-pullRight" aria-hidden="true"></i> </a> <div id="details-panel" class="TitleDetailsAccordion-panelContent content"> <article> <p> <b>Publisher:</b><br/> <a href="/search/publisherId?query=223131&sortBy=newlyadded" class="TitleDetailsAccordion-creatorLink" lang="en"> Recorded Books, Inc. </a> <br/> <b>Edition:</b><br/> Unabridged </p> <p> <b>OverDrive Listen audiobook</b><br/> ISBN: 9798894861173<br/> File size: 251204 KB<br/> Release date: November 20, 2024<br/> Duration: 08:43:20<br/> </p> </article> </div> </li> <li class="TitleDetailsAccordion-section accordion-navigation js-accordion-nav"> <a href="#creators-panel" class="TitleDetailsAccordion-panel"> Creators <i class="icon-forward-arrow TitleDetailsAccordion-panelArrow u-pullRight" aria-hidden="true"></i> </a> <div id="creators-panel" class="TitleDetailsAccordion-panelContent content"> <ul class="TitleDetailsAccordion-creatorList"> <li> <a class="TitleDetailsAccordion-creatorLink secondary-color" aria-label="Search by author, Kotaro Isaka" href="/search/creatorId?query=2361874&sortBy=newlyadded">Kotaro Isaka</a> - Author </li> <li> <a class="TitleDetailsAccordion-creatorLink secondary-color" aria-label="Search by author, Brian Bergstrom" href="/search/creatorId?query=2329915&sortBy=newlyadded">Brian Bergstrom</a> - Translator </li> <li> <a class="TitleDetailsAccordion-creatorLink secondary-color" aria-label="Search by author, Pun Bandhu" href="/search/creatorId?query=2466462&sortBy=newlyadded">Pun Bandhu</a> - Narrator </li> </ul> </div> </li> <li class="TitleDetailsAccordion-section accordion-navigation js-accordion-nav" id="formats-accordion"> <a href="#formats-panel" class="TitleDetailsAccordion-panel"> Formats <i class="icon-forward-arrow TitleDetailsAccordion-panelArrow u-pullRight" aria-hidden="true"></i> </a> <div id="formats-panel" class="TitleDetailsAccordion-panelContent content"> <div> <span>OverDrive Listen audiobook</span> <br/> </div> </div> </li> <li class="TitleDetailsAccordion-section accordion-navigation js-accordion-nav" id="languages-accordion"> <a href="#languages-panel" class="TitleDetailsAccordion-panel"> Languages <i class="icon-forward-arrow TitleDetailsAccordion-panelArrow u-pullRight" aria-hidden="true"></i> </a> <div id="languages-panel" class="TitleDetailsAccordion-panelContent content"> <div> English<br/> </div> </div> </li> </ul> </div> <script> $('.js-accordion-nav').on('click tap', function() { if (!$(this).hasClass('is-active')) { $('html, body').animate({ scrollTop: $('.js-accordion-details').offset().top - 35 }, 500); } }); </script> </div> <section class="js-relatedTitlesContainer DetailsRelatedTitles"> </section> <div role="dialog" id="limited-availability-help" class="reveal-modal small" data-reveal aria-hidden="true" > <div class="modal-header"> <h2 tabindex="0" class="modal-title primary-color u-allCaps js-first-focus">Why is availability limited?</h2> <a class="close-reveal-modal js-last-focus " role="button" id="close-availability" tabindex="0" aria-label="Close">×</a> </div> <div class="modal-container"> <p id="availability-label"> Availability can change throughout the month based on the library's budget. You can still place a hold on the title, and your hold will be automatically filled as soon as the title is available again. </p> </div> </div> <!-- Supported Devices Modal --> <div role="dialog" id="kindle-device-restrictions-modal" class="kindle-device-restrictions-modal reveal-modal small" data-reveal aria-hidden="true"> <div class="modal-header"> <h2 tabindex="0" class="primary-color modal-title js-first-focus">The Kindle Book format for this title is not supported on:</h2> <a class="close-reveal-modal js-last-focus" tabindex="0" role="button" aria-label="Close">×</a> </div> <div class="modal-container"> <div class="row"> <div class="large-12 columns"> <ul class="device-list small-block-grid-2 medium-block-grid-3"> </ul> </div> </div> </div> </div> <!-- Narrated content explanation modal --> <div role="dialog" id="narrated-modal" class="narrated-modal reveal-modal small" data-reveal aria-hidden="true"> <div class="modal-header"> <h2 data-first-focus tabindex="0" class="modal-title primary-color js-first-focus u-allCaps" >Read-along ebook</h2> <a class="close-reveal-modal" role="button" aria-label="Close" tabindex="0">×</a> </div> <div class="modal-container"> <p id="return-label"> The OverDrive Read format of this ebook has professional narration that plays while you read in your browser. <a href="https://help.overdrive.com/customer/portal/articles/1749249?Key=toronto&Sup=https%3A%2F%2Ffrontline.overdrive.com%2F%3FLib%3DToronto%2BPublic%2BLibrary%26CRID%3D1357%26edge%3Dtrue%26Key%3Dtoronto" target="_blank" rel="noreferrer" class="modal-link">Learn more here.</a> </p> <div class="button-container"> <button type="button" data-cancel class="button radius margin-small outline gray cancel u-allCaps js-last-focus">Close</button> </div> </div> </div> </main> <div class="js-hideOnCdnError"> <div class="customFooter row"> <div class="customFooter customFooter-body"> <div lang=en><a class='text-center center' style='font-weight: bold; font-size: 1.2rem' target='_blank' href='https://insights.overdrive.com/dashboards/bf060ec0dbdd4c8ba5bc0812ddf6e94f'>Check Out What's Being Checked Out Right Now</a></div> </div> </div> <script> (function() { var usesLibby = true; var usesSora = false; function hasDownloadableFormats() { return (window.OverDrive.supportedFormats || []) .filter(function(format) { return format.mediaType !== 'ntc' && format.id !== 'audiobook-overdrive' && format.id !== 'ebook-kobo' && format.id !== 'ebook-media-do' && format.id !== 'ebook-overdrive' && format.id !== 'magazine-overdrive'; }) .length > 0; } function isWindows() { return window.navigator.userAgent.match(/Win/) && !bowser.windowsphone; } function isKindle() { return window.OverDrive.isKindle; } function renderFooter(elementId, reactRenderFunctions) { var canPromoteApps = hasDownloadableFormats() && !window.OverDrive.isTolinoDevice && !window.OverDrive.optimizeForChina; var showLibbyPromo = canPromoteApps && usesLibby; var showSoraPromo = canPromoteApps && usesSora; var showOverDrivePromo = canPromoteApps && !showLibbyPromo && !showSoraPromo; var advantageKey = 'null'; reactRenderFunctions.renderFooter(elementId, { advantageKey: advantageKey, disableWishlist: window.featureManager.isEnabled('disableWishlist'), gacEnabled: false, hasLinkedCards: window.OverDrive.hasLinkedCards, isAuthenticated: window.OverDrive.isAuthenticated, isChinaSecurityCodeEnabled: window.featureManager.isEnabled('show-china-security-code-footer'), isConsortium: false, isDlr: true, isGdprCountry: window.OverDrive.isGdprCountry, isGhostLoginEnabled: window.featureManager.isEnabled('ghostLogin'), isSupportLinkEnabled: window.featureManager.isEnabled('show-support-form'), languages: [ { name: 'English', localeCode: 'en' }, { name: 'Fran莽ais (Canada)', localeCode: 'fr-CA' }, ], libraryHomeUrl: 'http://www.torontopubliclibrary.ca/', libraryKey: 'toronto', libraryName: window.OverDrive.libraryName, librarySupportEmail: window.OverDrive.librarySupportEmail, librarySupportUrl: window.OverDrive.librarySupportUrl, ntcMode: false, openLinksInNewWindow: !window.OverDrive.inApp, optimizeForChina: window.OverDrive.optimizeForChina, parentAccountKey: 'toronto', sampleOnlyMode: window.featureManager.isEnabled('sampleOnlyMode'), showHolds: window.featureManager.isEnabled('content-holds'), showKindlePromo: window.featureManager.isEnabled('kindleFooter'), showLibbyPromo: showLibbyPromo, showOverDrivePromo: showOverDrivePromo, showOverDriveWindowsLink: !window.featureManager.isEnabled('removeWindowsFromLibbyTout'), showReadingHistory: window.OverDrive.showHistoryFeature, showStarRating: window.featureManager.isEnabled('show-star-ratings'), showSoraPromo: showSoraPromo, simplifiedNavigationBar: window.featureManager.isEnabled('simplifiedNavigationBar'), socialFacebookUrl: '', socialPinterestUrl: '', socialTwitterUrl: 'https://twitter.com/torontolibrary', socialYouTubeUrl: '' }); } function renderLibbyFooterPromo(elementId, reactRenderFunctions) { var tabletSupportsLibby = !window.OverDrive.isUnsupportedKindle; if(window.OverDrive.isTolinoDevice) { //Do not display promos return; } if(window.featureManager.isEnabled('ODAppSunsetLibbyFooterPromo') && window.OverDrive.inApp && usesLibby && !window.featureManager.isEnabled('sampleOnlyMode')) { //Render the OverDrive App Sunset Footer Promo var isSunsetMayDateSet = window.featureManager.isEnabled('sunset-date-set'); var isSunsetKoreaDateSet = window.featureManager.isEnabled('odsunset-korea-2023'); reactRenderFunctions.renderODAppSunsetLibbyFooterPromo(elementId, { isWindows: isWindows(), isKindle: isKindle(), isSunsetMayDateSet: isSunsetMayDateSet, isSunsetKoreaDateSet: isSunsetKoreaDateSet, tabletSupportsLibby: tabletSupportsLibby }); } else if(window.featureManager.isEnabled('libby-footer-promo') && tabletSupportsLibby) { var isGeoIDCEnabled = window.featureManager.isEnabled('geo-idc'); //Render the Generic Libby Footer Promo or Tourism Footer Promo isGeoIDCEnabled ? reactRenderFunctions.renderTourismLibbyFooterPromo(elementId, { isKindle: isKindle(), }) : reactRenderFunctions.renderGenericLibbyFooterPromo(elementId, { isKindle: isKindle() }); } } function renderPartnerLibraries(elementId, reactRenderFunctions) { var partnerLibraries = [ ]; if (window.featureManager.isEnabled('reciprocalLending') && partnerLibraries.length > 0) { reactRenderFunctions.renderPartnerLibraries(elementId, { libraryName: window.OverDrive.libraryName, partnerLibraries: partnerLibraries }); } } onReactComponentsReady(function (event) { renderPartnerLibraries('footer-partner-libraries', event.detail); renderLibbyFooterPromo('footer-libby-promo', event.detail); renderFooter('footer-redesign', event.detail); }); })(); </script> <div id="footer-libby-promo"></div> <div id="footer-partner-libraries"></div> <div id="footer-redesign"></div> <script> $('.copyright > .ghost').on('click', function() { var url = window.routes.ozone.external; var form = $('<form sytle="display:none" id="target" method="post" action="' + window.url(window.routes.ozone.external, {forwardUrl: window.location.href}) +'">' + '<input type="hidden" name="authType" value="External">' + '<input type="hidden" name="ilsName" value="_ghost">' +'</form>'); $('body').append(form); form.submit(); }); </script> <!-- authenticate Modal --> <div id="authenticate-modal" class="authenticate-modal reveal-modal small" data-reveal aria-hidden="true" role="dialog"> <div class="modal-header"> <h2 tabindex="0" class="modal-title primary-color js-first-focus" >Session expired</h2> <a class="close-reveal-modal " role="button" aria-label="Close" tabindex="0">×</a> </div> <div class="modal-container" aria-describedby="authenticate-label"> <p class="modal-body" id="authenticate-label" data-first-focus > Your session has expired. Please sign in again so you can continue to borrow titles and access your Loans, Wish list, and Holds pages. </p> <p class="modal-body"> If you're still having trouble, <a target="_blank" rel="noreferrer" href="https://help.overdrive.com/customer/portal/articles/2847569">follow these steps to sign in.</a> </p> <div class="button-container"> <a href="/account/card/invalid" role="button" class="js-reauthenticate button margin-small radius secondary u-allCaps" aria-label="Sign in"> Sign in </a> <button type="button" data-cancel class="button radius margin-small outline gray cancel u-allCaps js-last-focus">Cancel</button> </div> </div> </div> <!-- Link Card Modal --> <div role="dialog" id="link-card-modal" class="link-card-modal reveal-modal small" data-reveal aria-hidden="true" > <div class="modal-header"> <h2 class="modal-title primary-color u-allCaps js-first-focus" id="link-card-modal-title" tabindex="0">Add a card</h2> <a class="close-reveal-modal" aria-label="Close" role="button" tabindex="0">×</a> </div> <div class="modal-container"> <div class="row"> <div class="description small-12 columns"> <p data-first-focus class="js-first-focus"> Add a library card to your account to borrow titles, place holds, and add titles to your wish list. </p> </div> </div> <div class="row"> <div class="category small-12 small-centered columns"> <p class="text"><span class="question">Have a card?</span> Add it now to start borrowing from the collection.</p> <div class="button-container"> <a href="/account/initiate-card-link" class="button margin-small radius secondary u-allCaps js-last-focus">Add a card</a> </div> </div> </div> </div> </div> <!-- Link Card Modal...psyche! --> <div role="dialog" id="card-error-modal" class="js-card-error-modal reveal-modal small" data-reveal aria-hidden="true" > <div class="modal-header"> <h2 tabindex="0" class="modal-title primary-color u-allCaps js-first-focus">Card error</h2> <a class="close-reveal-modal" aria-label="Close" role="button" tabindex="0">×</a> </div> <div class="modal-container"> <p > The library card you previously added can't be used to complete this action. Please add your card again, or add a different card. If you receive an error message, please contact your library for help. </p> <div class="button-container"> <a href="/account/initiate-card-link" id="add-card-button" class="button margin-small radius secondary u-allCaps" data-forward>Add a card</a> <a href="https://frontline.overdrive.com/?Lib=Toronto+Public+Library&CRID=1357&edge=true&Key=toronto" target="_blank" rel="noreferrer" class="button margin-small radius secondary support-choice-button u-allCaps"> Contact support </a> <button type="button" data-cancel class="button radius margin-small outline gray cancel u-allCaps js-last-focus" id="cancel-button">Cancel</button> </div> </div> </div> </div> <script src="https://lightning.od-cdn.com/static/lang/en.07bedb42a9f41a4e6854309ce942e337.js" onerror="cdnError(this)"></script> <script> var dynamicTranslations = {"customFooter":{"en":"<div lang=en><a class='text-center center' style='font-weight: bold; font-size: 1.2rem' target='_blank' href='https://insights.overdrive.com/dashboards/bf060ec0dbdd4c8ba5bc0812ddf6e94f'>Check Out What's Being Checked Out Right Now</a></div>","fr":"<div lang=fr><a class='text-center center' style='font-weight: bold; font-size: 1.2rem' target='_blank' href='https://insights.overdrive.com/dashboards/bf060ec0dbdd4c8ba5bc0812ddf6e94f'>D茅couvrez ce qui est v茅rifi茅 d猫s maintenant</a></div>"}}; for (var key in dynamicTranslations) { window.OverDrive.translations[key] = dynamicTranslations[key]; }; </script> <script src="https://lightning.od-cdn.com/static/assetMapper.bundle.min.05434cfeebc63fdebd7687f3657985eb.js" onerror="cdnError(this)"></script> <script>window.OverDrive.toStaticUrl = require('/lib/assetMapper.js').toStaticUrl</script> <script src="https://lightning.od-cdn.com/static/app.bundle.min.f97f6432ab5d04b94d2e2e959b4d4505.js" onerror="cdnError(this)"></script> <script> Foundation.global.namespace = ''; // Run foundation js dependencies $(document).foundation({ abide: { live_validate: false, focus_on_invalid : false, validate_on_blur : false, patterns: { email: /^([a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$/ }, equalizer: { equalize_on_stack: true } } }); // Set csrf header for all jQuery ajax requests $.ajaxSetup({ headers: {'csrf-token': $('#csrf').val() || OverDrive._csrf} }); $(document).ready(function(){ var isChromebook = window.navigator.userAgent.match(/CrOS/) ? true : false; var isWindows = window.navigator.platform.match(/Win/) && !bowser.windowsphone ? true : false; var isIpad = window.featureManager.isEnabled('stop-treating-ipad-like-mac') && window.navigator.userAgent.match(/App Store OverDrive Media Console/) ? true : false; var isMac = window.navigator.platform.match(/Mac/) && !bowser.ios && !isIpad ? true : false; var action = ''; var inApp = 'false' == 'true'; var formatId = 'audiobook-overdrive'; if('1' == '1') { if((formatId == 'ebook-pdf-adobe' && (bowser.ios || bowser.android || bowser.windowsphone || bowser.blackberry || isChromebook || (isWindows && inApp))) || (formatId == 'ebook-epub-adobe' && isChromebook && !inApp) || (formatId == 'ebook-kindle' && (bowser.blackberry)) || (formatId == 'ebook-pdf-open' && (((bowser.ios || bowser.android || isWindows || isChromebook) && inApp) || bowser.windowsphone || bowser.blackberry)) || (formatId == 'ebook-epub-open' && isChromebook && !inApp)) { action = window.html('read'); } else if ((formatId == 'audiobook-overdrive' && (bowser.windowsphone || bowser.blackberry)) || (formatId == 'audiobook-mp3' && isChromebook && !inApp) || (formatId == 'audiobook-mp3' && window.featureManager.isEnabled('noAudiobooksForMacOS') && isMac && (!featureManager.isEnabled('reenableMp3DownloadMacOSPreCatalina') || !window.OverDrive.isPreCatalinaMac))){ action = window.html('listenTo'); } else if (formatId == 'video-streaming' && (bowser.windowsphone || isChromebook)) { action = window.html('watch'); } // Warning messages for complete incompatibility at fulfillment if(action != '') { var isPDF = (formatId === 'ebook-pdf-adobe' || formatId === 'ebook-pdf-open'); var pdfLink = 'https://help.overdrive.com/customer/portal/articles/1481649'; var openWrap = isPDF ? "<a href='" + pdfLink + "'>" : ""; var closeWrap = isPDF ? "</a>" : ""; if (window.toaster) { if('false' == 'true'){ window.toaster.push(openWrap + window.html('toasts.invalidFormatAvailable', {formatName: 'OverDrive Listen audiobook', action: action}) + closeWrap, 'error'); } else if ('false' == 'false' && 'normal' == 'limited') { window.toaster.push(openWrap + window.html('toasts.invalidFormatLimited', {formatName: 'OverDrive Listen audiobook', action: action}) + closeWrap, 'error'); } else if ('false' == 'false') { window.toaster.push(openWrap + window.html('toasts.invalidFormatUnavailable', {formatName: 'OverDrive Listen audiobook', action: action}) + closeWrap, 'error'); } } } } }); if("1" == 1) { $("#formats-panel").addClass("active"); $("#formats-accordion").addClass("active"); } function closeNav(e) { var desktopContainer = $(".drop.content.open"); var mobileContainer = $('.mobile-nav-menu[data-menu]'); //Close Desktop if (!desktopContainer.is(e.target) && desktopContainer.has(e.target).length === 0 && !$(e.target).is('[aria-expanded],[aria-haspopup]')){ $(document).foundation('dropdown', 'close', $('.drop.content.open')); $('li[data-dropdown]').attr('aria-expanded', 'false'); } //Close mobile if (!mobileContainer.is(e.target) && mobileContainer.has(e.target).length === 0){ if ($('.mobile-nav-wrapper').hasClass('expanded')) { $('.mobile-nav-menu[data-menu]').toggle(); $('.mobile-nav-wrapper').removeClass('expanded').addClass('unexpanded'); $('.top-bar').removeClass('expanded').addClass('unexpanded'); if (window.toaster) window.toaster._stickToast(); } } } //Hide nav when clicked outside of it $(document).on("click tap", function(e){ closeNav(e); }); //Fix for issue with dropdown not closing upon clicking parent link $('li[data-dropdown]').on( "tap", function(e){ $('li[data-dropdown]').attr('aria-expanded', 'false'); e.stopImmediatePropagation(); e.preventDefault(); }); $(document).ready(function(e) { var URL = window.location.search.slice(1); var errorMessage = 'errorMessage'; var successMessage = 'successMessage'; var error = false; var success = false; if(URL.indexOf('errorMessage') > -1) { error = true; } else if (URL.indexOf('successMessage') > -1) { success = true; } if(error || success) { if (URL.indexOf('&') > -1) { URL = URL.split('&'); _.each(URL, function (URLee) { if (URLee.indexOf(errorMessage) > -1) { errorMessage = URLee.slice(errorMessage.length += 1); } else if (URLee.indexOf(successMessage) > -1) { successMessage = URLee.slice(successMessage.length += 1); } }); } else { if(error) { errorMessage = URL.slice(errorMessage.length += 1); } else { successMessage = URL.slice(successMessage.length += 1); } } } if (success && window.toaster) { var copy = window.html('toastSuccess'); var html = '<strong>' + copy + '</strong> ' + decodeURIComponent(successMessage); window.toaster.push(html, 'message'); } var cookies = ("cookie" in document && (document.cookie.length > 0 || (document.cookie = "test").indexOf.call(document.cookie, "test") > -1)); // If no cookie support: warn the user with a toast if (!cookies && window.toaster) { window.toaster.push('<strong>Error!</strong>' + html('toasts.cookiesMustBeEnabled', {link1: '<a href="https://help.overdrive.com/customer/portal/articles/1481652-how-to-enable-cookies-on-your-computer?Key=toronto&Sup=https%3A%2F%2Ffrontline.overdrive.com%2F%3FLib%3DToronto%2BPublic%2BLibrary%26CRID%3D1357%26edge%3Dtrue%26Key%3Dtoronto">how to enable cookies on a computer</a>', link2: '<a href="https://help.overdrive.com/customer/portal/articles/1481678-how-to-enable-cookies-on-your-mobile-device?Key=toronto&Sup=https%3A%2F%2Ffrontline.overdrive.com%2F%3FLib%3DToronto%2BPublic%2BLibrary%26CRID%3D1357%26edge%3Dtrue%26Key%3Dtoronto">how to enable cookies on a mobile device</a>'}), 'error'); } var $desktopAccountButton = $('#account-holder-name'); var $mobileAccountButton = $('li.account-dropdown-mobile a i.icon-account'); // intercept the account button click to navigate instead of toggle the advantage dropdown $desktopAccountButton.add($mobileAccountButton).on('click', function(e) { e.stopPropagation(); window.location = '/account/sign-in?forward=%2Fmedia%2F11021582'; }); }); var systemMsgArr = []; var sampleOnlyBannerMessage = systemMsgArr.filter(function(message) { return message.settings && message.settings.enhancedSiteMessage; })[0]; if (sampleOnlyBannerMessage) { if(window.OverDrive.pageMetadata && window.OverDrive.pageMetadata.pageName === 'home') { onReactComponentsReady(function (event) { event.detail.renderSampleOnlyBanner('sample-only-banner', { message: sampleOnlyBannerMessage.message, showLibbyAppStoreInfo: sampleOnlyBannerMessage.settings.showLibbyAppStoreInfo, showLibbyDeviceImage: sampleOnlyBannerMessage.settings.showLibbyDeviceImage }); }); } } else if (window.toaster) { window.toaster.bulkSystemMsgPush(systemMsgArr); } $('img').one('error', function() { this.src = window.OverDrive.toStaticUrl('img/no-cover_en_US.jpg'); }); //Set body attributes for tracking authentication and available linked cards. if (false && false) { $('body').attr({'authenticated': true, 'no-linked-cards': false}); } else if (false && !false) { $('body').attr({'authenticated': false, 'no-linked-cards': true}); } else { $('body').attr({'authenticated': false, 'no-linked-cards': false}); } //Add loading gif here to be used in javascript. Needs the swig cdn parameters for caching var primaryActionLoadingGif = '<img src="https://lightning.od-cdn.com/static/img/loading.17eca6dfe312e31db61216637ca7b440.gif">'; if(Cookies.get('high-contrast-setting') == 1) { primaryActionLoadingGif = '<img src="https://lightning.od-cdn.com/static/img/loading-contrast.0601caf072ee32dacc2d74de06d6ffe4.gif">'; } </script> <script src="https://lightning.od-cdn.com/static/media.app.min.014b4a6849bc1ebcf9e916eedcee256d.js"></script> <script src="https://lightning.od-cdn.com/static/details_page.bundle.min.6494beb2ee9f1756bdbcce7a1a6b0fdd.js"></script> </body> </html>