Ovarian cancer (FDA May 1996).
Cervical cancer (FDA June 2006).
Small cell lung carcinoma (SCLC) (FDA Oct 2007).
As of 2016 experiments were under way for Neuroblastoma, Brainstem glioma, Ewing's sarcoma and Angelman's syndrome. In addition, topotecan is experimentally treating Non-small cell lung cancer, Colorectal Cancer, Breast cancer, Non-Hodgkin Lymphoma, Endometrial cancer, and Oligodendroglioma.
Angelman's syndrome is a neuro-genetic disorder characterized by severe developmental delays, seizures, speech impairments and physical impairments. It is an epigenetic disease and other treatments focus on symptoms. It is caused by a deletion or mutation of the maternal allele for the ubiquitin protein ligase E3A. UBE3A is expressed in most body tissues. However, in neurons only the maternal copy of the gene is expressed. UBE3A is located on chromosome 15 and the paternal copy for the gene is genetically imprinted and is silenced by an antisense RNA transcript. The maternal copy control center of the gene is methylated, suppressing transcription in the antisense direction while the paternal copy control center is unmethylated.
Treatment involves unsilencing the paternal allele allowing the normal paternal UBE3A allele to be transcribed. UBE3A, in normal function, adds ubiquitin chains to proteins to target unnecessary or damaged proteins for degradation by the proteasome.
16 topoisomerasesinhibitors unsilence paternal UBE3A. Topoisomerases are enzymes that regulate the unwinding of DNA. Of these 16 inhibitors, topotecan was found to induce the strongest upregulation of UBE3A. The enzymes bind to the DNA and cut the phosphate backbone, allowing the DNA to be unwound. Topotecan unsilences the paternal UBE2A allele by reducing the transcription of an antisense transcript. Topotecan inhibits topoisomerase I restoring UBE3A levels to wild-type range in cultured mince neurons.
Transgenic mice with a fluorescently tagged UBE3A were used to test the effectiveness of unsilencing the paternal copy. When tested on mice in vivo, topotecan affected the hippocampus, striatum and cerebral cortex but not the cerebellum unless a higher dose was administered (21.6 micrograms/hour for five days). The study suggested that the topoisomerase inhibitors have the potential to produce a normally functioning UBE3A protein. Most symptoms due to Angelman's syndrome are traditionally treated by speech therapy, physical therapy and occupational therapy. Anti-seizure medication is often prescribed as seizures are a common symptom of Angelman's syndrome. These treatments target only symptoms.
This drug has been administered to cancer patients. It was well-tolerated when administered to pediatric and adult patients.
Two generic versions have been approved in the European Union. In Nov 2010 the US FDA approved a generic version.
^ Leger, F.; Loos, W.; Bugat, R.; Mathijssen, R.; Goffinet, M.; Verweij, J.; Sparreboom, A.; Chatelut, E. (2004). "Mechanism-based models for topotecan-induced neutropenia". Clinical Pharmacology & Therapeutics. 76 (6): 567–578. doi:10.1016/j.clpt.2004.08.008. PMID 15592328.
^ "FDA Approval for Topotecan Hydrochloride". National Cancer Institute.
^ "GSK Receives Approval for Hycamtin (topotecan) Capsules for theTreatment of Relapsed Small Cell Lung Cancer".
^ Haglof, K (2006). "Recent developments in the clinical activity of topoisomerase-1 inhibitors". Update on Cancer Therapeutics. 1 (2): 117–145. doi:10.1016/j.uct.2006.05.010.
^ a b Beaudet 2011.
^ Pommier, Y.; Leo, E.; Zhang, H.; Marchand, C. (2010). "DNA topoisomerases and their poisoning by anticancer and antibacterial drugs". Chem. Biol. 17 (5): 421–433. doi:10.1016/j.chembiol.2010.04.012. PMID 20534341.
^ a b c d Cordell, Geoffrey, ed. (2003). The Alkaloids: Chemistry and Biology. California: Academic Press. pp. 1–50. ISBN 978-0080521497.
^ a b c d Pommier, Yves (2006). "Topoisomerase I inhibitors: camptothecins and beyond". Nature Reviews Cancer. 6 (10): 789–802. doi:10.1038/nrc1977. PMID 16990856.
^ Staker, B.L.; et al. (2002). "The mechanism of topoisomerase I poisoning by a camptothecin analog". PNAS. 99 (24): 15387–15392. doi:10.1073/pnas.242259599. PMC 137726. PMID 12426403.
^ Bertrand, Richard; Solary, Eric; O'Connor, Patrick; Kohn, Kurt W.; Pommier, Yves (1994-04-01). "Induction of a Common Pathway of Apoptosis by Staurosporine". Experimental Cell Research. 211 (2): 314–321. doi:10.1006/excr.1994.1093. PMID 8143779.
^ "FDA Rubber-Stamps APP Pharma's Generic Topotecan for Small Cell Lung and Cervical Cancers". 30 Nov 2010.
Dagli, Aditi I.; Mueller, Jennifer; Williams, Charles A. (1993-01-01). Pagon, Roberta A.; Adam, Margaret P.; Ardinger, Holly H.; Wallace, Stephanie E.; Amemiya, Anne; Bean, Lora JH; Bird, Thomas D.; Fong, Chin-To; Mefford, Heather C. (eds.). Angelman Syndrome. Seattle (WA): University of Washington, Seattle. PMID 20301323.
Bailus, Barbara J.; Segal, David J. (2014-01-01). "The prospect of molecular therapy for Angelman syndrome and other monogenic neurologic disorders". BMC Neuroscience. 15: 76. doi:10.1186/1471-2202-15-76. ISSN 1471-2202. PMC 4069279. PMID 24946931.
Beaudet, Arthur L. (2011-12-21). "Drugs to awaken a paternal gene". Nature. 481 (7380): 150–152. doi:10.1038/nature10784. ISSN 0028-0836. PMC 3638729. PMID 22190038.


text:
Stylish Summer fashion billboards around L.A. in J...
Summer drinks and lifestyle billboards filling L.A...
Blockbuster movie, music and gaming billboards aro...
Labrador Cooper triumphantly returns to the beach....
New series and returning TV show billboards fillin...
The weather may be unpredictable of late in L.A. (hot, humid, cloudy, raining), but one thing is constant, the fact that there's always a fantastic assortment of new and returning TV show billboards entertaining the city skyline. Here's a selection of the best television outdoor ads that caught my eye in July 2015.
Congratulations to freshman comedy Unbreakable Kimmy Schmidt for securing five Emmy nominations, including one for Best Comedy and another for Tituss Burgess, as Kimmy's dramatic New York roommate, 'Titus Andromendon' (in the lookalike Iron Man costume above). I love this bubbly ad creative for the Netflix series, it's just so much fun and sums up the feel of the show and its titular character.
The Emmy consideration billboards have all but disappeared this late in the month, but there were still some to be spotted at the beginning of July, like this Brooklyn Nine-Nine ad creative which helped earn the show a nomination for Andre Braugher.
If you like these two examples, be sure to also check out all these other Emmy consideration billboards for 2015.
Another weird and wacky billboard this month was this quirky creative for IFC's fourth season of Comedy Bang! Bang! How can you not love an ad creative stuffed with rainbows, seesaws, astronauts and an assortment of animals.
Everyone loves a cute baby and a good poop joke, so this billboard for Terra's Little Family made me smile this month. If you're a fan of the Lifetime reality series, be sure to also check out these other billboards for Little Women: LA.
Meanwhile MTV2 was having a 'Nonstop Summer' in the skies of L.A. with these bright creatives for new shows like Not Exactly News and Kingin with Tyga.
Be sure to also check out this Wild 'N Out billboard, which is also part of this seasonal outdoor ad campaign.
Nicole Richie, one of TV's original reality stars who was 'famous for being famous' brought some zesty colour to the skies of Sunset Strip this month, returning for a sophomore season of Candidly Nicole.
Ben Kingsley provided a familiar face for Spike's mini-series about the rise to glory of the Egyptian Pharaoh in these Tut billboards.
No stranger to sands-and-sandals drama, be sure to check out the actor's costume from Prince of Persia: The Sands of Time on display.
Speaking of the past (but not so ancient), and Hell on Wheels was back in the skies for its fifth and final season, as the Western series reached the end of the railroad.
Another series embarking on its fifth and final season was sci-fi drama Falling Skies, ready for one last battle against Earth's alien invaders.
Speaking of science fiction, NBC is resurrecting one of its old genre shows with Heroes Reborn this Fall.
Ray Donovan was back in the skies as L.A.'s 'fixer' to the rich and famous, and to help celebrate the third season Liev Schreiber was nominated for a Best Actor Emmy Award.
Also back for a third season is Showtime's Masters of Sex with this fun Twister-themed billboard, enjoying Emmy nominations for guest actors Allison Janney and Beau Bridges.
Continuing the sex theme and Dennis Leary was back on FX as an aging rocker getting the band back together in Sex & Drugs & Rock & Roll.
Adult Swim continued to bring their usual mix of unorthodox billboards to the skies of Sunset Boulevard with this sophomore season ad for Your Pretty Face is Going to Hell, a live-action workplace drama about demons working for Satan to recruit souls for underworld.
Plus breakout animated hit Rick and Morty, about a mad scientist and his grandson, was back for its second season with this dimension-hopping billboard.
Also in the world of animation for grown-ups and Netflix's BoJack Horseman was back for a sophomore season about the washed up Hollywood star horse trying to get his life back in order.
Hannibal Buress was asking Why? for Comedy Central this month with this fun ad creative for his new show featuring man-on-the-street interviews, standup and sketches tackling topical issues.
And comedians Key & Peele went all emoji for the fifth and final season of the sketch show series. If you're a fan of the comedy show, be sure to also enjoy all these previous Key & Peele season promo billboards.
A classic comedy getting a revival in the city skies this month was Seinfeld. Now you can watch any season, any episode, any moment of the iconic sitcom on Hulu, and if you're a fan check out these other fun illustrated Seinfeld Hulu billboards from around the streets of L.A. this month.
The streaming service was also welcoming popular Showtime series like Homeland, Masters of Sex and Ray Donovan to its offering with this billboard in July.
I also continued to spot new creatives from the Mr. Robot series launch ad campaign with their 'Big Brother' and anti-corporation rhetoric.
Plus MTV's adaptation of the Scream movie franchise received a super-sized billboard along Wilshire Boulevard. I wonder if they saw a second season coming, as the series has been renewed already.
This month TNT's Cold Justice gets a spinoff with the debut of Cold Justice: Sex Crimes, featuring real-life prosecutors Casey Garrett and Alicia O'Neill traveling to small towns to help local law enforcement solve dormant sexual assault cases.
And also in the world of reality television, the Wahlberg clan is back for a fourth season of fame and burger business with this family portrait creative for Wahlburgers.
In addition to documentaries, Netflix is also making a name for itself with standup comedy specials and this month you can see Chris Tucker Live.
YouTube continues to promote its online personalities Hannah Hart and Grace Helbig in the skies of L.A. and I also spied this billboard for their sports comedy channel, Dude Perfect, this month too.
As you can see there's been no rest for television in the skies of L.A. this past month, and it's only going to get busier as studios and networks will soon start promoting all their new hopefuls for the Fall TV season.
I'll keep my eyes to the skies and try and capture all the cool creatives worth sharing next month, until then, be sure to stay tuned right here...
Stylish Summer fashion billboards around L.A. in July 2015...
This month it hasn't been the biggest fashion catwalk in the skies of L.A., the clothing seasons are changing and we got a weird mix of Summer and Fall advertisements, when the sun is shining and the temperatures are soaring.
Always in vogue, Prada debuts some new eyewear, a West Coast fashion essential and practical necessity with the blazing California sunshine.
Italian jewelry brand Bulgari was also showing off its newest shades for Summer with this glamorous ad creative along the Sunset Strip.
Meanwhile Emporio Armani was showing off its new Fall fashions with this new billboard, which looks like its better suited to New York City than L.A. life.
British fashion house Burberry was keeping things under wraps with this new Fall 2015 creative showing off their must-have capes.
And Hale Bob kept the spirit of Summer alive with their unique prints in their latest billboard.
Online fashion retailer Net-a-Porter was getting comfy in white in their last ad high over L.A.'s Sunset Plaza.
And website MeUndies, who claim to be purveyors of the world's most comfortable underwear, were making us all wonder who Jen is.
Is this her? Or is the lady in question yet to be revealed. Or is Jen just a new style of underwear?
Over in Westwood the Breitling Jet Team were flying high to advertise the Swiss watch brand's strong connection with aviation.
And Sportie LA was helping define the youthful look of the City of Angels with its wide selection of athletic footwear and apparel.
Let's hope August is more fruitful for stylish ads, but in the meantime why not compare this collection to last year's fashion billboards filling L.A.'s skyline.
Stay tuned for a roundup of this month's TV show billboards and be sure to check out all the movie billboards and lifestyle billboards spied around the streets this July...
Summer drinks and lifestyle billboards filling L.A.'s skyline in July 2015...
This months there's been a whole variety of different billboards filling the city skyline, from drinks to technology, tourism and retail outdoor ads. Here's a selection of the eclectic lifestyle billboards causing a second look in the skies of L.A. in July.
First up is this bright and joyful billboard for Hubert's Lemonade, which certainly made me perk up when I saw the vibrant yellow creative.
Meanwhile if you're looking to quench your thirst with an alcoholic beverage this month, you could tell it was beer season as the skies were filled with a variety of brands to enjoy at the beach, poolside or at a BBQ, like Modelo Especial.
And another Mexican beer to evoke the feel of being at the beach, Pacifico beer.
Of course as it is swimsuit season, those low-calorie brews are even more important, like Natural Light helping you to enjoy these California shores more.
While Miller Lite was also advertising its reduced-calorie offering with its aluminum pint bottle which comes with a resealable screw cap, to help keep things cool and that sand out.
And if all those beers gave you the munchies, then Food Should Taste Good had this Blue Corn chip ad creative to satisfy your cravings, and make you feel better about eating them.
Financial billboards
Even financial services advertising embraced Summer this month, with student loan refinancer, SoFi, helping passersby to dream about their future Malibu home with this shoreline creative.
Plus Wells Fargo embraced the great outdoors with this Summery stagecoach creative, encouraging you to take the reins with your finances.
Travel, tourism and theme park billboards
Everyone knows that you can't really get very far in L.A. without a car, but the bus and rail Metro are currently trying to help get cars off the road by encouraging people to walk instead of use their car for short trips if they can.
And if you're planning a trip to the Natural History Museum in L.A. County, then they've got new ways for you and your kids to explore nature this Summer holiday.
Plus another tourist attraction, the La Brea Tar Pits, are also trying to entice visitors to their new Titans of the Ice Age 3D feature.
If you're a fan of saber-tooth tigers and wooly mammoths, be sure to also enjoy these Ice Age movie billboards.
If all else fails to keep your kids occupied this Summer, and you're not afraid to spend the money, then Disneyland is celebrating 60 years with these glittering anniversary billboards (although it seems strange to see 'Olaf the Snowman' in the skies with L.A.'s soaring temperatures).
Charity and cause-related billboards
It's also nice to see that not all advertising is trying to sell you something, but rather encourage you to do something for the environment, like recycle.
And sometimes keeping things simple works best to get your message across, like this Goodwill ad creative encouraging us to donate stuff to help create jobs.
Nest may be more known for its smoke detectors and thermostat systems, but of late it's been promoting its Next Cam to help keep and eye on your home and your loved ones, like your pets and babies with these clever designs.
Be sure to also take a look at Nest Cam's duo of paw print billboards along the Sunset Strip to see the full effect of their special extension billboard.
One billboard which really stood out along the Strip was this giant slide ad creative for T-Mobile on the side of the Mondrian Hotel, which you can't miss with that shocking hot pink colour.
And another technology billboard which made an impact was the new super-sized ad for Samsung's new wireless charging feature for its Galaxy S6 Edge smartphone.
Meanwhile this solar panel company made me smile with their use of 'Uncle Sam' in their ad creative. I'm sure it's not the first time his iconic imagery has been used to help sell a product or service, rather than for army recruits.
Retail billboards
And finally The Grove shopping center was advertising by tapping into what we were all thinking, how do we 'stay cool this Summer' in the heat (or more importantly what are the latest fashions and accessories that will help make us look cool this season).
If you like this snapshot of ad creatives around the skies of L.A. this year, be sure to also check out last July's lifestyle billboards and who was advertising their wares.
Plus stay tuned in the days to come for all the latest TV and fashion billboards making the skies more entertaining and stylish...
Summer TV show billboards around L.A. in July 2015...Stylish Summer fashion billboards around L.A. in July 2015...Summer drinks and lifestyle billboards filling L.A.'s skyline in July 2015... ~ Jason in Hollywood

redpajama_set_name: RedPajamaCommonCrawl


RSA supports only one instance of the NetWitness UEBA server. If you have added more than one NetWitness UEBA server, follow these steps to remove the extra NetWitness UEBA server.
Refer to the Contact RSA Customer Support page (https://community.rsa.com/docs/DOC-1294) in RSA Link for instructions on how to get help on RSA NetWitness Platform.


We hypothesise that intraerythrocytic malaria parasite metabolism is not merely fulfilling the need for ATP generation, but is evolved to support rapid proliferation, similar to that seen in other rapidly proliferating cells such as cancer cells. Deregulated glycolytic activity coupled with impaired mitochondrial metabolism is a metabolic strategy to generate glycolytic intermediates essential for rapid biomass generation for schizogony. Further, we discuss the possibility that Plasmodium metabolism is not only a functional consequence of the 'hard-wired' genome and argue that metabolism may also have a causal role in triggering the cascade of events that leads to developmental stage transitions. This hypothesis offers a framework to rationalise the observations of aerobic glycolysis, atypical mitochondrial metabolism, and metabolic switching in nonproliferating stages.


Ralph Macchio, chief scientific officer and senior vice president of Global Research & Development, will retire from Coty after a distinguished 25 years with the company. His retirement has reportedly been in the pipeline for a couple of years, but he had agreed to postpone it until after the merger and integration with P&G Beauty Business was well advanced.
According to Coty, a successor will be announced in the near future.
Macchio will leave Coty on June 30, 2017. During the interim period, the R&D team will report to Pane.


text:
Q: Deleting control points in ArcGIS Georeferencing? I'm trying to georeference a raster in ArcMap 10.2 using a rivers vector (polyline) feature class. I started by shifting and rotating the raster. However when deleting a control point to reduce my RMS, both shift and rotation are "being automatically" canceled and I need to shift and rotate the raster back again.
It only occurs in "Auto Adjust" mode.;
Does somebody have a clue about the origin of the problem?

A: I don't know the reason for that problem, but after I removed the Raster from my .mxd and reloaded it - the problem was fixed.
Now I can delete control points without it messing my shift and rotation of the raster.

redpajama_set_name: RedPajamaStackExchange


text:
GIA 0420 Plug-in Display Now with M12 Connection
Sensors are often installed in difficult-read positions. The GIA 0420-M12 plug-in display from the GHM GROUP can be turned in all viewing directions to enable readings of critical measurements directly at the location.
Sensor manufacturers, plant builders and operators benefit from a flexible display device that can be installed even more easily with the worldwide standard M12 plug connection.
Ready-to-connect M12 concept for less effort
With the new M12 connection installed in the GIA 0420-M12, the time-tested plug-in display is suitable for countless 4-20 mA sensors with the internationally standardised interface – for applications including pressure, temperature, flow, fill and pH measurement. In particular, plant builders who cannot afford expensive bus technology benefit from a robust, user-friendly and economical solution that can also be flexibly retrofitted. Without significant intervention in the system, with speedy commissioning and a special coding of the M12 connector to prevent incorrect connection.
'The basic properties of the M12 plug connector have been the same for years and were incorporated into a standardisation process. It is robust, can be installed reliably and can be put into operation quickly. As a result, the M12 connection has been established as a worldwide industry standard and leading connection system.
Jürgen Brass, Product Manager in the Center of Competence Greisinger of the GHM GROUP
Rotating display can be read from all directions
With the freely rotating housing, critical measurements can be read from all directions, regardless of how and where the plug-in display is installed. In addition, there is the plug, which can be moved 360° in eight positions and the display itself, which also has a range of 360° with screw mounting in four positions. Users benefit from high flexibility, which makes the GIA 0420-M12 the ideal solution for troubleshooting, maintenance, system monitoring and system optimisation.
Application example of the GIA 0420-12
Self-supply and minimal voltage drop of only 2 V
The plug-in display supplies itself from the current loop and, in doing so, causes only a minimal voltage drop of 2 volts. The display itself is freely scalable over a range of 1999..+9999 digits, making it universal in use. The GIA 0420-M12 is optionally available with two switching outputs and exposed or concealed buttons.
In addition to the M12 version, the plug-in display is available as a version with ISO valve plug (GIA 0420 VO), as an Ex version with cubic plug or the GRA 0420 with LED display for dark light conditions. Of course, this is all provided in the familiar product and service quality 'Made in Germany ' to which GHM GROUP customers are accustomed.
Click here for more information about the GIA 0420-M12Click here for related articles and news
Sign up for Level Control and Measurement E-Updates
This article is published by GHM Messtechnik GmbH
Six strong, traditional brands under one roof What began as a vision in 2009, is being continuously driven forward: Merging the five well-known family businesses under one roof, we can now respond quickly and flexibly to global trends with bundled competence and offer our customers a comprehensive range of state-of-the-art measuring technology from ...
More in Level Control and Measurement
Flexible Flowmeter / Display Unit Combination
Providing a Local Display of Any Thermal Mass Flow Meter or Controller
New Intrinsically Safe, Wireless Flow Totalizer Provides Field Display of Flow Rates and Totals
New LQ800 Multi Channel Controller Delivers Total Solution


Locksmith Bundeena is a mobile service provided by At Call Locksmiths. We have more than 32 years experience and a mobile workshop fleet which operate in standby enabling us to to provide locksmiths to different locations around the Sutherland shire area to be your locksmith near me Bundeena. We are able to supply and fit domestic and commercial locks. We cater for automotive, fire and standard doors, safes and restricted key systems as well as providing key cutting services. Our team of Bundeena locksmiths only use the latest, most reliable products available and deliver superior workmanship and affordability to ensure customer satisfaction is maintained both now and into the future.
If you're looking for a quality Bundeena Locksmith at low everyday prices, you can't beat At Call Locks. We also provides a fast and reliable 24 hour Locksmith Bundeena service delivering an immediate response time of 30-60 minutes. If you need a commercial, domestic locksmith any time of day or night, rely on us. When you've locked your keys inside your home, or office, call our 24 hour emergency locksmiths. During business hours, At Call can be contacted through the 'Quick Enquiry' form or by calling our friendly staff.. If you require our emergency Locksmith Bundeena outside business hours, call 1300 24 22 55.


First prize for the best Spot, Advertising Photography and Website. Agripina Advertising, Marketing and Communication Awards (Spain).
Best stand at the Interior Design fair. Interior Design Show Booth Awards (Canada).
Advertising Campaign of the Year for Tops on Top with Cindy Crawford. EK&BBusiness Awards (United Kingdom).
Endowment Sign for the collaboration in the construction of the Al Jalila Cultural Centre (Dubai, United Arab Emirates).
Discover all the applications of our products.
Our network of Cosentino Centers, Cosentino City Centers, and partners offers facilities to advise you in the process of buying our products. Find your nearest distributor with our map.
Silestone is made of more than 90% pure quartz . Available in more than 80 colours and different textures, it is the ideal surface for interior decoration, both in kitchen and bathroom worktops and in other household applications.
Sensa gives you the opportunity to enjoy natural stone without worry about its maintenance. Its revolutionary stain treatment allows stone to be used in kitchen applications.


First of all, whatever you do – plan your outfits in advance! How many times haven't you packed clothes only to end up not using them? Well, too many times, I'm sure! A simple way to avoid this problem though is too plan your outfits in advance. Count how many days you'll be away, how many outfits you need (perhaps one for the day and a change for the night?). Put together some outfits that works and dare to use the same clothing piece more than once. Like a white t-shirt for day time with denim is always a hit, a white t-shirt with cigarette pants and perhaps a statement necklace for night works perfectly well! So give yourself some time to plan properly. It's so worth it!
Sounding all serious here, but destiny in the context of the geographical spot of where you're heading (duh)! Hopefully you'll know where you're going and what the trip will consist of! Is it a lot of walking? Museums? Are you doing a Vegas thing? Well, know what sort of activities that are up and it will be a lot eaiser to plan your outfits. Perhaps it's very causal and cozy or it'll be all fancy? Well knowing your destiny is sort of knowing the dresscode which is sort of knowing what clothes that will work!
When it comes to creating outfits, and you want to reuse clothes (which I think you should), I have a styling hack for you that's foolproof: pack after a color scale! I know crazy! But what I do is that I pick a clothing piece in a print with at least two separate color scales in it. If it's a skirt I'll choose a top that matches one of the color scales and another top that matches the other scale. THEN (this is specific I know) I choose bottoms after the two tops. One for each color scale! I make sure that I can match the color scales with one another too (they work in the same print, right?). So that is it, I have two different colors (kind of awkward to only be dressed in green in all pictures from the trip huh?). If you're uncomfortable mixing colors, I suggest reaching for colors that are closely related. Earthy colors works well together and looks rather neutral too! Olive green, camel, copper, beige etc!
Another hack is, if you know your traveling company, is to share a clothing piece or two. Perhaps you and your friend are both bringing two identical cardigans that you know you easily can borrow from one another instead? Well, bring one cardigan then! (If you're not going to use them a lot aka at the same time). This can be done in whatever context you prefer. But jackets, cardigans and scarves are undoubtedly rather neutral and can favorably be shared!
Ugh such a boring thing to state, but ever so true! When traveling, feeling comfortable in your outfit is key! You don't want to wear uncomfortable shoes when you've been walking for five hours. Or that dress that is itchy or that skirt that won't stay in its place (etc etc). So pick the clothing pieces you know will have your back throughout the day/trip! And whatever you do, don't try new shoes. Or if you do, have a backup plan or tools that will help you making the new shoes work! Also, always pack at least one foolproof clothing piece. Mine is often a maxi dress! It's elegant, comfortable and kind of cozy!!
Folks! Which one of these pack tips summer 2018 is your favorite? Let's chat in the comments!
I wish I had more travel buddies. Almost my entire group of regular friends are back at home. I'd love to trade clothes with good friends. That was the best during fashion week with friends though. 🙂 I love that tip. Have a wonderful week!
I always find it so hard to pack even just for a couple of days because I'm so indecisive! I always change my mind at the last minute, so I end up packing so many options, but you're right, I hardly ever wear all of the clothing. I love your packing strategy on using a color scale. This is definitely a great way to narrow down to what to bring, assuring you'll always have something to wear that'll mix and match, making for more space and a lighter carry on. Thanks for sharing, beauty!
Your color scale trick is so handy- means you can remix outfits on vacay without overloading that suitcase!
These are great tips, especially for me since I always tend to over pack. Thanks for sharing!
These are such great tips, especially the one about thinking in terms of color scale. I find that is so key on trips! My husband always makes fun of my meticulously mapped out outfits, all of the same color scale, but it's the KEY to packing for travel!
comfort is key! I can't agree with you more! every time I try to be overly stylish and pack things that just don't work for sightseeing for hours I always end up regretting it!
Great tips! I'll definitely be keeping these in mind!
Yeah these are certainly things to remember when packing. Great stuff.


For years, A1 Cycles has proven to be the best choice for custom, high performance builds. If you are in the market for creating the build that leaves no stone unturned, you are in the right place. We specialize in all levels of engine building and deliver unforgettable service for frame modifications, complete custom builds, bike updates, fuel injection tuning, Dynometer service, chrome front end swaps, powder coating services, tire changes, and even basic bike services. Are you looking for trackside support? Once again, you're in the right place.
We work with our clients closely and are taking clients on an appointment basis. Contact us today to find out how we can get your dream build started.
Our personal service promises professional grade machine work for the rider who wants top of the line builds completed with attention to detail always in mind. Mike has gained national attention and has shifted his business into a lower gear to focus on custom builds and full machine shop services. A1 Cycles is your one stop shop for all things drag racing.
A1 Cycles has a full service machine shop for all of your engine needs. Whether you are looking to get your cylinder, valves, rods, or crank cases worked on, our shop can handle it all. Learn more about the machine shop by getting in touch with us for your next build.
Read more about the DynoJet 250i we use for all of our readings at A1 Cycles.
Our dyno is set to read air to fuel ratio, horsepower, mph and much more. The accurate readings are what you need to get that time slip you've been waiting for out on the track. Our devices are top of the line and will leave you understanding your machine and it's power. Learn more about the dyno we have here. Call us today to set up your tuning session.


Wilkinson Animal Hospital is in eastern Gastonia (just west of Charlotte) off Wilkinson Boulevard (Highway 74) by the intersection of Gaston Road and Ledwell Street.
Wilkinson Animal Hospital is easily accessed from all areas of Gastonia, Charlotte, Lowell, Belmont, Cramerton, Ranlo, McAdenville, Bessemer City, Dallas and all of Gaston County, North Carolina. Plus we are convenient for pet owners near Rock Hill, Clover and Lake Wylie, South Carolina.


Several retailers have dropped the price of the PSPgo to under £200 after just one weekend on sale. Amazon.co.uk, Play and GAME and HMV now ask £199.99 for the smaller and lighter handheld which previously commanded £224.99. Argos still asks for £219.99, however, and ShopTo charges full price, £224.99. Sony announced a PSP sales increase of 120 per cent following the launch of the PSPgo, although the new model only matched the existing PSP-3000 in terms of units shifted over the weekend.


text:
All of my posts
NatWest Allocates £3.2bn to Cover Bad Loans
Posted by MoneyController on 22.02.2021
NatWest Group reported a loss for the year 2020 to the tune of 351 million pounds. The firm reported that it had set aside 3.2 billion pounds to compensate for possible bad loans due to the pandemic. The bank also announced that it will start paying dividends to its shareholders again.
Setting aside money for bad loans
A total of 3.2 billion pounds was set aside as reserve funds by the bank. Setting aside money for bad loans is a precautionary measure NatWest has decided to take in light of the pandemic. The bank believes that the actual losses from bad loans are expected to be much lower than 3.2 billion, however.
The bank also decided to pay out dividends with a total of 364 million pounds going out to shareholders. Last year, the Bank of England asked other banks to halt dividend payments; but in December, regulators lifted this restriction and allowed them to start paying dividends again.
The bank has a healthy balance sheet with its assets exceeding its liabilities even with the reported loss. During the course of the year, it reduced the size and activities of its investment branch, helping improve its capital position. This is one reason why the bank was able to pay a dividend despite the situation.
Since the UK government is also a shareholder in the group, the Treasury is set to receive returns of 225 million pounds.
Ulster closure in Ireland
The group has also decided to leave the Irish market after withdrawing from the region last week. Ulster Bank, which is the third-largest bank in the Republic of Ireland was already struggling with its operations. The bank was not profitable and sustainable returns for investors were becoming increasingly harder.
The CEO of NatWest Group, Alison Rose, said a detailed review of the bank's performance had taken place and even though the bank looked like it was making progress, it was clear the bank would continue struggling in the long run. Allied Irish Banks will acquire some of the commercial loans of the struggling bank as well as hire some of its staff.
Paschal Donohoe, the Irish finance minister, said that it was a sad day for the country. The bank had served the region for 160 years.
The financial results of NatWest group come after another bank, Barclays, reported its results the same week. Barclays reported a profit of 3.1 billion pounds and was able to perform better thanks largely to its investment banking activities. It had also decided to set aside 4.8 billion pounds for bad loans for reasons similar to NatWest Group.
READ ARTICLES ON THIS TOPIC
Financial strategy and management
Gov. bonds and Spread
Mega-trends
MoneyController Life
Online finance software
TODAY'S MOST READ ARTICLES
18.01.2022 posted by MoneyController
Climate tech investments are on the rise
Investing in the space economy
MOST READ ARTICLES OF THE WEEK
Investments: what are the promising sectors for 2022?
How important is a professional financial advisor?
MOST READ ARTICLES OF THE MONTH
Omicron variant scares away ETF investors
Oil rebounds after fall: good sign?
MOST READ ARTICLES IN THE FINANCIAL FORUM
UK housing prices in April: the largest monthly rise in 17 years
Grayscale, BNY Mellon team up in prep for Bitcoin ETF
View classification


Just a reminder to all that our December meeting will not be held in the usual location due to scheduling conflicts.
December's meeting will be held on Wednesday, December 2, 2015 at The Haul.
They have graciously donated the use of the upstairs facilities for meeting. Looking forward to seeing all you there. Of course, as always, visitors and potential new members are always welcome.


text:
Q: Handling stdClass objects After googling a while, I found out I can make google searches using this code:
$text=$_GET['text'];
$results=file_get_contents("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=" . $text);
// Too lazy to use cURL
$results=json_decode($results);

The problem is that $results is actually an object(stdClass), and handling it like I would with arrays doesn't work (i.e. $results["responseData"]). This is the full var_dump:
object(stdClass)#1 (3) {
  ["responseData"]=>
  object(stdClass)#2 (2) {
    ["results"]=>
    array(4) {
      [0]=>
      object(stdClass)#3 (8) {
        ["GsearchResultClass"]=>
        string(10) "GwebSearch"
        ["unescapedUrl"]=>
        string(51) "http://www.urbandictionary.com/define.php?term=lulz"
        ["url"]=>
        string(55) "http://www.urbandictionary.com/define.php%3Fterm%3Dlulz"
        ["visibleUrl"]=>
        string(23) "www.urbandictionary.com"
        ["cacheUrl"]=>
        string(73) "http://www.google.com/search?q=cache:9eN_paaTATEJ:www.urbandictionary.com"
        ["title"]=>
        string(29) "Urban Dictionary: lulz"
        ["titleNoFormatting"]=>
        string(22) "Urban Dictionary: lulz"
        ["content"]=>
        string(159) "Beginning as a plural variant of lol, Lulz was originally an exclamation but is now   often used as a noun meaning interesting or funny internet cont..."
      }
      [1]=>
      object(stdClass)#4 (8) {
        ["GsearchResultClass"]=>
        string(10) "GwebSearch"
        ["unescapedUrl"]=>
        string(34) "http://en.wiktionary.org/wiki/lulz"
        ["url"]=>
        string(34) "http://en.wiktionary.org/wiki/lulz"
        ["visibleUrl"]=>
        string(17) "en.wiktionary.org"
        ["cacheUrl"]=>
        string(67) "http://www.google.com/search?q=cache:ksdO4S_AefUJ:en.wiktionary.org"
        ["title"]=>
        string(24) "lulz - Wiktionary"
        ["titleNoFormatting"]=>
        string(17) "lulz - Wiktionary"
        ["content"]=>
        string(173) "Like "Hakuna matata†in The Lion King, "lulz†is not just a word, but a philosophy.   [...] Anonymous has made campaigning sexy for the first time since 1968."
      }
      [2]=>
      object(stdClass)#5 (8) {
        ["GsearchResultClass"]=>
        string(10) "GwebSearch"
        ["unescapedUrl"]=>
        string(51) "http://knowyourmeme.com/memes/i-did-it-for-the-lulz"
        ["url"]=>
        string(51) "http://knowyourmeme.com/memes/i-did-it-for-the-lulz"
        ["visibleUrl"]=>
        string(16) "knowyourmeme.com"
        ["cacheUrl"]=>
        string(66) "http://www.google.com/search?q=cache:ITVRlkQkfckJ:knowyourmeme.com"
        ["title"]=>
        string(45) "I Did It for the Lulz | Know Your Meme"
        ["titleNoFormatting"]=>
        string(38) "I Did It for the Lulz | Know Your Meme"
        ["content"]=>
        string(173) "About I Did it for the Lulz (also known as 4 the lulz) is a popular catchphrase used   to express that one carried out a specific action for the sake of perso."
      }
      [3]=>
      object(stdClass)#6 (8) {
        ["GsearchResultClass"]=>
        string(10) "GwebSearch"
        ["unescapedUrl"]=>
        string(56) "http://www.internetslang.com/LULZ-meaning-definition.asp"
        ["url"]=>
        string(56) "http://www.internetslang.com/LULZ-meaning-definition.asp"
        ["visibleUrl"]=>
        string(21) "www.internetslang.com"
        ["cacheUrl"]=>
        string(71) "http://www.google.com/search?q=cache:UNXME3GmS-AJ:www.internetslang.com"
        ["title"]=>
        string(88) "What does LULZ mean? - LULZ Definition - Meaning of LULZ ..."
        ["titleNoFormatting"]=>
        string(60) "What does LULZ mean? - LULZ Definition - Meaning of LULZ ..."
        ["content"]=>
        string(185) "This Internet Slang page is designed to explain what the meaning of LULZ is. The   slang word / acronym / abbreviation LULZ means... . Internet Slang. A list of ..."
      }
    }
    ["cursor"]=>
    object(stdClass)#7 (6) {
      ["resultCount"]=>
      string(9) "1,080,000"
      ["pages"]=>
      array(8) {
        [0]=>
        object(stdClass)#8 (2) {
          ["start"]=>
          string(1) "0"
          ["label"]=>
          int(1)
        }
        [1]=>
        object(stdClass)#9 (2) {
          ["start"]=>
          string(1) "4"
          ["label"]=>
          int(2)
        }
        [2]=>
        object(stdClass)#10 (2) {
          ["start"]=>
          string(1) "8"
          ["label"]=>
          int(3)
        }
        [3]=>
        object(stdClass)#11 (2) {
          ["start"]=>
          string(2) "12"
          ["label"]=>
          int(4)
        }
        [4]=>
        object(stdClass)#12 (2) {
          ["start"]=>
          string(2) "16"
          ["label"]=>
          int(5)
        }
        [5]=>
        object(stdClass)#13 (2) {
          ["start"]=>
          string(2) "20"
          ["label"]=>
          int(6)
        }
        [6]=>
        object(stdClass)#14 (2) {
          ["start"]=>
          string(2) "24"
          ["label"]=>
          int(7)
        }
        [7]=>
        object(stdClass)#15 (2) {
          ["start"]=>
          string(2) "28"
          ["label"]=>
          int(8)
        }
      }
      ["estimatedResultCount"]=>
      string(7) "1080000"
      ["currentPageIndex"]=>
      int(0)
      ["moreResultsUrl"]=>
      string(76) "http://www.google.com/search?oe=utf8&ie=utf8&source=uds&start=0&hl=en&q=lulz"
      ["searchResultTime"]=>
      string(4) "0.23"
    }
  }
  ["responseDetails"]=>
  NULL
  ["responseStatus"]=>
  int(200)
}

So, any clue on how to read the results array? (Didn't try anything but the $results["responseData"], as I never used JSON before.)

A: To reach responseData you must use $results->responseData, because $results is object. If you have object you can access it's properties with ->.
P.S. responseData is also object so if you need to access results you must use $results->responseData->results and so on ...

A: Use the arrow operator to access an object's data:
$results->responseData;

Or, if you prefer an array, you can use the 2nd param of json_decode to return the json data as an array, e.g.:
$results = json_decode($results, true);

In general, you could also cast any object to an array using this:
$results = (array) $results;

Using either of the above, you can access your data using PHP array key syntax:
$results['responseData'];


text:
Freshmen Athletes Work Hard to Get Involved
Jocelyn Arraya, Layout Artist
Kevin Vo (9), one of our football players.
(Photo by Jocelyn Arraya)
With the school year just starting all the new freshmen have come in. Now entering high school, the freshmen are finding different ways to get involved with school. A big way to get more involved is to get into the sports here at Falls Church. There are many talented freshmen athletes that have joined the fall teams such as Cheerleading, Cross Country, Field Hockey, Football, Golf, and Volleyball. I had the opportunity to sit and talk to some of these student athletes.
Kevin Vo (9), Football
What made you want to try out for football?
My uncle is the one who really influenced me try out for football and just try new things.
Do you have any rituals before a game?
I like to listen to classic 90's basically before a game. I mainly like to listen to Michael Jackson.
How do you think your team will do this season?
I think we're going to do well this season. We got speed on the line. We got a lot of skilled players. All we have to do is work on our line and our blocking skills and we'll be alright.
Are you passionate about football?
Yes I'm definitely passionate about football. My passion started when Eli Manning was starting out in my favorite team, the New York Giants, and I hope to someday play alongside him and maybe even get better than him.
Ashley Rivera (9), Volleyball
What made you want to try out for volleyball?
In the 8th grade I thought I should be more athletic and well-rounded so I started to get into volleyball when I was at Poe so I went to play it after school and I went to volleyball clinics and ended up trying out for the team.
How do you get over getting nervous about representing the whole school?
I usually try to get mad at pretty much anything, enough to forget that I'm nervous so that I can show my skill and that they're good.
"We all get together and talk about what we're going to do before a game and when someone is about to serve we all chant their name.
"Honestly I don't think we're going to do that bad because the JV and varsity team says that we're a better team than the other freshman teams and so far we are undefeated.
Ivan Mate (9), Cross Country
What made you want to try out for Cross Country?
Well my mom runs a lot and I really wanted a sport to do for the fall.
Do you feel nervous about being a freshmen representing your school?
No, not really because there's a lot of other freshmen doing it with me.
How is it like to work with your team?
My teammates are fun to run with and I think it is cool to meet new people from being on the team.
Are you passionate about cross country?
Yes, I am passionate about cross country mainly because of my mom and I just generally like to run.


text:
135 North Broad St
Milford, CT United States
www.georgejsmithandson.com
Obituary Listings for Smith Funeral Home
Lillian W. Norton (October 11, 2010)
Smith & Sefcik Funeral Home - Milford, Connecticut
Harry Diamond (October 10, 2010)
Marilyn C. Bragano (October 8, 2010)
Margaret L. Taylor (October 2, 2010)
Pasquale R. Cicarelli (September 30, 2010)
Lillian Lamberti (September 29, 2010)
Russell William Hunt (September 27, 2010)
Garfield Joseph Haley (September 26, 2010)
Patsy J. Mucherino (September 25, 2010)
Joseph A. Carregal (September 19, 2010)
Joseph T. Volturno (September 18, 2010)
Ronald F. Richards (September 17, 2010)
Marlene Iris Shock Illyn (September 13, 2010)
Arthur Robert Lucke (September 13, 2010)
Chinchu Helen Wang (September 9, 2010)
Alan M. Schroeder (September 8, 2010)
Anne Sarah Vinci (September 6, 2010)
Helen Wayne Jones (September 3, 2010)
Joseph Thomas Maloney (August 30, 2010)
Frank L. Fettes (August 29, 2010)
first prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 next last
Showing 881 to 900 of 1429 ( 72 Pages )
Loading More Obituaries


text:
La stazione di Sassano-Teggiano è una stazione ferroviaria posta sulla linea Sicignano-Lagonegro. Serve i centri abitati di Sassano e di Teggiano.

Bibliografia
 Rete Ferroviaria Italiana, Fascicolo Linea 124.

Sassano
Teggiano
Sassano-Teggiano

redpajama_set_name: RedPajamaWikipedia


Adam do you know if there are any plans for EWS to order some class 66/9 low-emission variant locomotives?
None as yet. But EWS have ordrered low emission varients for France, but they are slightly differant so are out of gauge for the UK.
Oh rite, thanks for that!
I was just hoping that if they did, Bachmann would consider producing a 66/9 in EWS like the Freightliner, DRS and Stobart ones they have done!
PTmodeller wrote: None as yet. But EWS have ordrered low emission varients for France, but they are slightly differant so are out of gauge for the UK.
All my stock is tension lock coupling without detail couplings so the buckeye didn't really bother me.
When I say "acquired in 1998" in the review I mean actually running in the UK, it's what the box said.
I was on holiday in Cambridge in 2006 and I was in a long line to buy a ticket. Out of the corner of my eye I saw intermodal flats passing the platform. I was annoyed. Eventually I bought the ticket and went out expecting to see that the freight had passed. Lucky me, it was stopped. Off I went to take a photo. What was the loco? 66001! I was ecstatic as this was the first time I have ever photted a 66. Good to start at the beginning.


All Florida Fire Equipment Company believes firmly in bringing a thorough brand of safety and quality to its customers. Part of being thorough is covering all areas of service. All Florida Fire Equipment covers service dually, geographically and industrially. By servicing Tampa, Saint Petersburg, Lakeland, Sarasota and Clearwater, All Florida is virtually everywhere. All Florida can also be found on the water in the form of our service and installation of Seafire and Fireboy boat suppression systems. In addition, All Florida also has these products in the most variations. All Florida Fire offers many applications of the Seafire and Fireboy systems. A few of the Fireboy pre-engineered systems offered are the Fireboy MA2-025-227, Fireboy MA2-175-227 and Fireboy MA2-500-227 systems. All Florida also has but is not limited to Seafire systems like the Seafire FG100A, Seafire FG225A and Seafire FG75M. The what, where and why on Fireboy and Seafire boat suppression systems will be the highlight here.
What do I need a Seafire or Fireboy boat fire systems for?
A Seafire or Fireboy system is for protection against fires that have a fuel source likely to be liquid gas or other combustible liquids. Also Fireboy and Seafire both have models that boast manual and automatic operation. Seafire and Fireboy systems are for manned or un-manned areas of potential hazard.
Where do I need Fireboy or Seafire boat fire systems?
Put a Seafire or Fireboy system in the engine room of your boat to protect yourself as well as your investment. It may be stipulated that a portable dry chemical fire extinguisher is sufficient for safety of all calibers; it is not. Seafire and Fireboy systems use heptafluoropropane (FM-200) which is a clean agent that will not damage equipment the way that dry chemical extinguishing agents will.
Why do I want to choose Seafire or Fireboy for a boat fire system?
Seafire offers many choices in pre-engineered boat systems. With easy service from All Florida Fire Equipment, installation and safety is second nature. Fireboy systems are equally vast in options in comparison to Seafire. Between the two, hazards of all measures are covered. Fireboy Systems are available to protect engine rooms and machinery spaces from as small as 25 cubic feet to as large as 3000 cubic feet. Seafire models available are 32 standard sizes, approved in sizes from 150 cubic feet (4.2 cubic meters) up to 1500 cubic feet (42.5 cubic meters) of engine compartment volume.
All Florida Fire Equipment Inc.
Copyright © 2019 All Florida Fire Equipment Inc.


Dr told me to climb up 30 flights of stairs!!!
Had a drs appointment today, she checked my cervix and told me the length was 4.8mm and hard, and that the baby wasn't coming any time soon. I told her I am only 36 weeks (+2) so I wasn't expecting it to. She told me the baby was ready to be born, but my body wasn't ready to give birth and if I wanted the baby out sooner I should climb up 30 stairs a day and or do 30 sets of squats.
Afterwards my husband and I just laughed, I am a certified couch potato, going up 30 flights of stairs would probably kill me. We decided we were happy to wait until bubba is ready. Anyone else get odd advice from their doctors?
Haha, what's the rush, doc? If I climbed up just 3 flights of stairs, I'd probably throw up and faint.
Thankfully, my doctor is level-headed. He's the one telling me no need to check my cervix, and I'm perfectly happy with that.
How does your doctor know that your baby is ready? Lol. That's the dumbest thing I've ever heard and not how things work. When the baby is ready, your baby's lungs will release a hormone which your body's receptors will receive the chemical message, and respond with labor and birth. I mean.... that's a very simplified version of it, if you'd like to learn more, just google "hormonal cocktail of labor."
I agree with you, not your doctor. They can go fly a kite.
I can barely walk to the bathroom, screw 30 flights of stairs.
I was exhausted just reading that. Getting out of bed is a challenge enough these days.
I'm out of breath just going up our small amount of stairs at home and chasing my toddler around!
Yeah . . no. I only climb stairs to do laundry and honestly pretty soon I may even give that up. 30 flights of stairs very well may kill me at this point. If his point was being active helps with the process that is probably true but definitely he at min has lack of bedside manner. I would of been like, "And how many pregnant women have you been around." If someone told me to climb stairs I would roll my eyes, yawn, eat something entirely non healthy and binge out on Netflix.
Update - she's here! It's time! Cross your fingers for my VBAC success!


text:
package deb

import (
	"bytes"
	"errors"
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"

	"github.com/aptly-dev/aptly/aptly"
	"github.com/aptly-dev/aptly/database"
	"github.com/aptly-dev/aptly/files"
	"github.com/ugorji/go/codec"

	. "gopkg.in/check.v1"
)

type pathExistsChecker struct {
	*CheckerInfo
}

var PathExists = &pathExistsChecker{
	&CheckerInfo{Name: "PathExists", Params: []string{"path"}},
}

func (checker *pathExistsChecker) Check(params []interface{}, names []string) (result bool, error string) {
	_, err := os.Stat(params[0].(string))
	return err == nil, ""
}

type NullSigner struct{}

func (n *NullSigner) Init() error {
	return nil
}

func (n *NullSigner) SetKey(keyRef string) {
}

func (n *NullSigner) SetBatch(batch bool) {
}

func (n *NullSigner) SetKeyRing(keyring, secretKeyring string) {
}

func (n *NullSigner) SetPassphrase(passphrase, passphraseFile string) {
}

func (n *NullSigner) DetachedSign(source string, destination string) error {
	return ioutil.WriteFile(destination, []byte{}, 0644)
}

func (n *NullSigner) ClearSign(source string, destination string) error {
	return ioutil.WriteFile(destination, []byte{}, 0644)
}

type FakeStorageProvider struct {
	storages map[string]aptly.PublishedStorage
}

func (p *FakeStorageProvider) GetPublishedStorage(name string) aptly.PublishedStorage {
	storage, ok := p.storages[name]
	if !ok {
		panic(fmt.Sprintf("unknown storage: %#v", name))
	}
	return storage
}

type PublishedRepoSuite struct {
	PackageListMixinSuite
	repo, repo2, repo3, repo4, repo5    *PublishedRepo
	root, root2                         string
	provider                            *FakeStorageProvider
	publishedStorage, publishedStorage2 *files.PublishedStorage
	packagePool                         aptly.PackagePool
	cs                                  aptly.ChecksumStorage
	localRepo                           *LocalRepo
	snapshot, snapshot2                 *Snapshot
	db                                  database.Storage
	factory                             *CollectionFactory
	packageCollection                   *PackageCollection
}

var _ = Suite(&PublishedRepoSuite{})

func (s *PublishedRepoSuite) SetUpTest(c *C) {
	s.SetUpPackages()

	s.db, _ = database.NewOpenDB(c.MkDir())
	s.factory = NewCollectionFactory(s.db)

	s.root = c.MkDir()
	s.publishedStorage = files.NewPublishedStorage(s.root, "", "")
	s.root2 = c.MkDir()
	s.publishedStorage2 = files.NewPublishedStorage(s.root2, "", "")
	s.provider = &FakeStorageProvider{map[string]aptly.PublishedStorage{
		"":            s.publishedStorage,
		"files:other": s.publishedStorage2}}
	s.packagePool = files.NewPackagePool(s.root, false)
	s.cs = files.NewMockChecksumStorage()

	tmpFilepath := filepath.Join(c.MkDir(), "file")
	c.Assert(ioutil.WriteFile(tmpFilepath, nil, 0777), IsNil)

	var err error
	s.p1.Files()[0].PoolPath, err = s.packagePool.Import(tmpFilepath, s.p1.Files()[0].Filename, &s.p1.Files()[0].Checksums, false, s.cs)
	c.Assert(err, IsNil)

	s.p1.UpdateFiles(s.p1.Files())
	s.p2.UpdateFiles(s.p1.Files())
	s.p3.UpdateFiles(s.p1.Files())

	s.reflist = NewPackageRefListFromPackageList(s.list)

	repo, _ := NewRemoteRepo("yandex", "http://mirror.yandex.ru/debian/", "squeeze", []string{"main"}, []string{}, false, false, false)
	repo.packageRefs = s.reflist
	s.factory.RemoteRepoCollection().Add(repo)

	s.localRepo = NewLocalRepo("local1", "comment1")
	s.localRepo.packageRefs = s.reflist
	s.factory.LocalRepoCollection().Add(s.localRepo)

	s.snapshot, _ = NewSnapshotFromRepository("snap", repo)
	s.factory.SnapshotCollection().Add(s.snapshot)

	s.snapshot2, _ = NewSnapshotFromRepository("snap", repo)
	s.factory.SnapshotCollection().Add(s.snapshot2)

	s.packageCollection = s.factory.PackageCollection()
	s.packageCollection.Update(s.p1)
	s.packageCollection.Update(s.p2)
	s.packageCollection.Update(s.p3)

	s.repo, _ = NewPublishedRepo("", "ppa", "squeeze", nil, []string{"main"}, []interface{}{s.snapshot}, s.factory)
	s.repo.SkipContents = true

	s.repo2, _ = NewPublishedRepo("", "ppa", "maverick", nil, []string{"main"}, []interface{}{s.localRepo}, s.factory)
	s.repo2.SkipContents = true

	s.repo3, _ = NewPublishedRepo("", "linux", "natty", nil, []string{"main", "contrib"}, []interface{}{s.snapshot, s.snapshot2}, s.factory)
	s.repo3.SkipContents = true

	s.repo4, _ = NewPublishedRepo("", "ppa", "maverick", []string{"source"}, []string{"main"}, []interface{}{s.localRepo}, s.factory)
	s.repo4.SkipContents = true

	s.repo5, _ = NewPublishedRepo("files:other", "ppa", "maverick", []string{"source"}, []string{"main"}, []interface{}{s.localRepo}, s.factory)
	s.repo5.SkipContents = true
}

func (s *PublishedRepoSuite) TearDownTest(c *C) {
	s.db.Close()
}

func (s *PublishedRepoSuite) TestNewPublishedRepo(c *C) {
	c.Check(s.repo.sourceItems["main"].snapshot, Equals, s.snapshot)
	c.Check(s.repo.SourceKind, Equals, "snapshot")
	c.Check(s.repo.Sources["main"], Equals, s.snapshot.UUID)
	c.Check(s.repo.Components(), DeepEquals, []string{"main"})

	c.Check(s.repo2.sourceItems["main"].localRepo, Equals, s.localRepo)
	c.Check(s.repo2.SourceKind, Equals, "local")
	c.Check(s.repo2.Sources["main"], Equals, s.localRepo.UUID)
	c.Check(s.repo2.sourceItems["main"].packageRefs.Len(), Equals, 3)
	c.Check(s.repo2.Components(), DeepEquals, []string{"main"})

	c.Check(s.repo.RefList("main").Len(), Equals, 3)
	c.Check(s.repo2.RefList("main").Len(), Equals, 3)

	c.Check(s.repo3.Sources, DeepEquals, map[string]string{"main": s.snapshot.UUID, "contrib": s.snapshot2.UUID})
	c.Check(s.repo3.SourceKind, Equals, "snapshot")
	c.Check(s.repo3.sourceItems["main"].snapshot, Equals, s.snapshot)
	c.Check(s.repo3.sourceItems["contrib"].snapshot, Equals, s.snapshot2)
	c.Check(s.repo3.Components(), DeepEquals, []string{"contrib", "main"})

	c.Check(s.repo3.RefList("main").Len(), Equals, 3)
	c.Check(s.repo3.RefList("contrib").Len(), Equals, 3)

	c.Check(func() { NewPublishedRepo("", ".", "a", nil, nil, nil, s.factory) }, PanicMatches, "publish with empty sources")
	c.Check(func() {
		NewPublishedRepo("", ".", "a", nil, []string{"main"}, []interface{}{s.snapshot, s.snapshot2}, s.factory)
	}, PanicMatches, "sources and components should be equal in size")
	c.Check(func() {
		NewPublishedRepo("", ".", "a", nil, []string{"main", "contrib"}, []interface{}{s.localRepo, s.snapshot2}, s.factory)
	}, PanicMatches, "interface conversion:.*")

	_, err := NewPublishedRepo("", ".", "a", nil, []string{"main", "main"}, []interface{}{s.snapshot, s.snapshot2}, s.factory)
	c.Check(err, ErrorMatches, "duplicate component name: main")

	_, err = NewPublishedRepo("", ".", "wheezy/updates", nil, []string{"main"}, []interface{}{s.snapshot}, s.factory)
	c.Check(err, ErrorMatches, "invalid distribution wheezy/updates, '/' is not allowed")
}

func (s *PublishedRepoSuite) TestPrefixNormalization(c *C) {

	for _, t := range []struct {
		prefix        string
		expected      string
		errorExpected string
	}{
		{
			prefix:   "ppa",
			expected: "ppa",
		},
		{
			prefix:   "",
			expected: ".",
		},
		{
			prefix:   "/",
			expected: ".",
		},
		{
			prefix:   "//",
			expected: ".",
		},
		{
			prefix:   "//ppa/",
			expected: "ppa",
		},
		{
			prefix:   "ppa/..",
			expected: ".",
		},
		{
			prefix:   "ppa/ubuntu/",
			expected: "ppa/ubuntu",
		},
		{
			prefix:   "ppa/../ubuntu/",
			expected: "ubuntu",
		},
		{
			prefix:        "../ppa/",
			errorExpected: "invalid prefix .*",
		},
		{
			prefix:        "../ppa/../ppa/",
			errorExpected: "invalid prefix .*",
		},
		{
			prefix:        "ppa/dists",
			errorExpected: "invalid prefix .*",
		},
		{
			prefix:        "ppa/pool",
			errorExpected: "invalid prefix .*",
		},
	} {
		repo, err := NewPublishedRepo("", t.prefix, "squeeze", nil, []string{"main"}, []interface{}{s.snapshot}, s.factory)
		if t.errorExpected != "" {
			c.Check(err, ErrorMatches, t.errorExpected)
		} else {
			c.Check(repo.Prefix, Equals, t.expected)
		}
	}
}

func (s *PublishedRepoSuite) TestDistributionComponentGuessing(c *C) {
	repo, err := NewPublishedRepo("", "ppa", "", nil, []string{""}, []interface{}{s.snapshot}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "squeeze")
	c.Check(repo.Components(), DeepEquals, []string{"main"})

	repo, err = NewPublishedRepo("", "ppa", "wheezy", nil, []string{""}, []interface{}{s.snapshot}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "wheezy")
	c.Check(repo.Components(), DeepEquals, []string{"main"})

	repo, err = NewPublishedRepo("", "ppa", "", nil, []string{"non-free"}, []interface{}{s.snapshot}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "squeeze")
	c.Check(repo.Components(), DeepEquals, []string{"non-free"})

	repo, err = NewPublishedRepo("", "ppa", "squeeze", nil, []string{""}, []interface{}{s.localRepo}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "squeeze")
	c.Check(repo.Components(), DeepEquals, []string{"main"})

	_, err = NewPublishedRepo("", "ppa", "", nil, []string{"main"}, []interface{}{s.localRepo}, s.factory)
	c.Check(err, ErrorMatches, "unable to guess distribution name, please specify explicitly")

	s.localRepo.DefaultDistribution = "precise"
	s.localRepo.DefaultComponent = "contrib"
	s.factory.LocalRepoCollection().Update(s.localRepo)

	repo, err = NewPublishedRepo("", "ppa", "", nil, []string{""}, []interface{}{s.localRepo}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "precise")
	c.Check(repo.Components(), DeepEquals, []string{"contrib"})

	s.localRepo.DefaultDistribution = "precise/updates"

	repo, err = NewPublishedRepo("", "ppa", "", nil, []string{""}, []interface{}{s.localRepo}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "precise-updates")
	c.Check(repo.Components(), DeepEquals, []string{"contrib"})

	repo, err = NewPublishedRepo("", "ppa", "", nil, []string{"", "contrib"}, []interface{}{s.snapshot, s.snapshot2}, s.factory)
	c.Check(err, IsNil)
	c.Check(repo.Distribution, Equals, "squeeze")
	c.Check(repo.Components(), DeepEquals, []string{"contrib", "main"})

	_, err = NewPublishedRepo("", "ppa", "", nil, []string{"", ""}, []interface{}{s.snapshot, s.snapshot2}, s.factory)
	c.Check(err, ErrorMatches, "duplicate component name: main")
}

func (s *PublishedRepoSuite) TestPublish(c *C) {
	err := s.repo.Publish(s.packagePool, s.provider, s.factory, &NullSigner{}, nil, false)
	c.Assert(err, IsNil)

	c.Check(s.repo.Architectures, DeepEquals, []string{"i386"})

	rf, err := os.Open(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/squeeze/Release"))
	c.Assert(err, IsNil)

	cfr := NewControlFileReader(rf, true, false)
	st, err := cfr.ReadStanza()
	c.Assert(err, IsNil)

	c.Check(st["Origin"], Equals, "ppa squeeze")
	c.Check(st["Components"], Equals, "main")
	c.Check(st["Architectures"], Equals, "i386")

	pf, err := os.Open(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/squeeze/main/binary-i386/Packages"))
	c.Assert(err, IsNil)

	cfr = NewControlFileReader(pf, false, false)

	for i := 0; i < 3; i++ {
		st, err = cfr.ReadStanza()
		c.Assert(err, IsNil)

		c.Check(st["Filename"], Equals, "pool/main/a/alien-arena/alien-arena-common_7.40-2_i386.deb")
	}

	st, err = cfr.ReadStanza()
	c.Assert(err, IsNil)
	c.Assert(st, IsNil)

	drf, err := os.Open(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/squeeze/main/binary-i386/Release"))
	c.Assert(err, IsNil)

	cfr = NewControlFileReader(drf, true, false)
	st, err = cfr.ReadStanza()
	c.Assert(err, IsNil)

	c.Check(st["Archive"], Equals, "squeeze")
	c.Check(st["Architecture"], Equals, "i386")

	_, err = os.Stat(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main/a/alien-arena/alien-arena-common_7.40-2_i386.deb"))
	c.Assert(err, IsNil)
}

func (s *PublishedRepoSuite) TestPublishNoSigner(c *C) {
	err := s.repo.Publish(s.packagePool, s.provider, s.factory, nil, nil, false)
	c.Assert(err, IsNil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/squeeze/Release"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/squeeze/main/binary-i386/Release"), PathExists)
}

func (s *PublishedRepoSuite) TestPublishLocalRepo(c *C) {
	err := s.repo2.Publish(s.packagePool, s.provider, s.factory, nil, nil, false)
	c.Assert(err, IsNil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/maverick/Release"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/maverick/main/binary-i386/Release"), PathExists)
}

func (s *PublishedRepoSuite) TestPublishLocalSourceRepo(c *C) {
	err := s.repo4.Publish(s.packagePool, s.provider, s.factory, nil, nil, false)
	c.Assert(err, IsNil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/maverick/Release"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/maverick/main/source/Release"), PathExists)
}

func (s *PublishedRepoSuite) TestPublishOtherStorage(c *C) {
	err := s.repo5.Publish(s.packagePool, s.provider, s.factory, nil, nil, false)
	c.Assert(err, IsNil)

	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/maverick/Release"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/maverick/Release"), Not(PathExists))
}

func (s *PublishedRepoSuite) TestString(c *C) {
	c.Check(s.repo.String(), Equals,
		"ppa/squeeze [] publishes {main: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}")
	c.Check(s.repo2.String(), Equals,
		"ppa/maverick [] publishes {main: [local1]: comment1}")
	repo, _ := NewPublishedRepo("", "", "squeeze", []string{"s390"}, []string{"main"}, []interface{}{s.snapshot}, s.factory)
	c.Check(repo.String(), Equals,
		"./squeeze [s390] publishes {main: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}")
	repo, _ = NewPublishedRepo("", "", "squeeze", []string{"i386", "amd64"}, []string{"main"}, []interface{}{s.snapshot}, s.factory)
	c.Check(repo.String(), Equals,
		"./squeeze [i386, amd64] publishes {main: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}")
	repo.Origin = "myorigin"
	c.Check(repo.String(), Equals,
		"./squeeze (origin: myorigin) [i386, amd64] publishes {main: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}")
	repo.Label = "mylabel"
	c.Check(repo.String(), Equals,
		"./squeeze (origin: myorigin, label: mylabel) [i386, amd64] publishes {main: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}")
	c.Check(s.repo3.String(), Equals,
		"linux/natty [] publishes {contrib: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}, {main: [snap]: Snapshot from mirror [yandex]: http://mirror.yandex.ru/debian/ squeeze}")
	c.Check(s.repo5.String(), Equals,
		"files:other:ppa/maverick [source] publishes {main: [local1]: comment1}")
}

func (s *PublishedRepoSuite) TestKey(c *C) {
	c.Check(s.repo.Key(), DeepEquals, []byte("Uppa>>squeeze"))
	c.Check(s.repo5.Key(), DeepEquals, []byte("Ufiles:other:ppa>>maverick"))
}

func (s *PublishedRepoSuite) TestRefKey(c *C) {
	c.Check(s.repo.RefKey(""), DeepEquals, []byte("E"+s.repo.UUID))
	c.Check(s.repo.RefKey("main"), DeepEquals, []byte("E"+s.repo.UUID+"main"))
}

func (s *PublishedRepoSuite) TestEncodeDecode(c *C) {
	encoded := s.repo.Encode()
	repo := &PublishedRepo{}
	err := repo.Decode(encoded)

	s.repo.sourceItems = nil
	c.Assert(err, IsNil)
	c.Assert(repo, DeepEquals, s.repo)

	encoded2 := s.repo2.Encode()
	repo2 := &PublishedRepo{}
	err = repo2.Decode(encoded2)

	s.repo2.sourceItems = nil
	c.Assert(err, IsNil)
	c.Assert(repo2, DeepEquals, s.repo2)
}

type PublishedRepoCollectionSuite struct {
	PackageListMixinSuite
	db                                database.Storage
	factory                           *CollectionFactory
	snapshotCollection                *SnapshotCollection
	collection                        *PublishedRepoCollection
	snap1, snap2                      *Snapshot
	localRepo                         *LocalRepo
	repo1, repo2, repo3, repo4, repo5 *PublishedRepo
}

var _ = Suite(&PublishedRepoCollectionSuite{})

func (s *PublishedRepoCollectionSuite) SetUpTest(c *C) {
	s.db, _ = database.NewOpenDB(c.MkDir())
	s.factory = NewCollectionFactory(s.db)

	s.snapshotCollection = s.factory.SnapshotCollection()

	s.snap1 = NewSnapshotFromPackageList("snap1", []*Snapshot{}, NewPackageList(), "desc1")
	s.snap2 = NewSnapshotFromPackageList("snap2", []*Snapshot{}, NewPackageList(), "desc2")

	s.snapshotCollection.Add(s.snap1)
	s.snapshotCollection.Add(s.snap2)

	s.localRepo = NewLocalRepo("local1", "comment1")
	s.factory.LocalRepoCollection().Add(s.localRepo)

	s.repo1, _ = NewPublishedRepo("", "ppa", "anaconda", []string{}, []string{"main"}, []interface{}{s.snap1}, s.factory)
	s.repo2, _ = NewPublishedRepo("", "", "anaconda", []string{}, []string{"main", "contrib"}, []interface{}{s.snap2, s.snap1}, s.factory)
	s.repo3, _ = NewPublishedRepo("", "ppa", "anaconda", []string{}, []string{"main"}, []interface{}{s.snap2}, s.factory)
	s.repo4, _ = NewPublishedRepo("", "ppa", "precise", []string{}, []string{"main"}, []interface{}{s.localRepo}, s.factory)
	s.repo5, _ = NewPublishedRepo("files:other", "ppa", "precise", []string{}, []string{"main"}, []interface{}{s.localRepo}, s.factory)

	s.collection = s.factory.PublishedRepoCollection()
}

func (s *PublishedRepoCollectionSuite) TearDownTest(c *C) {
	s.db.Close()
}

func (s *PublishedRepoCollectionSuite) TestAddByStoragePrefixDistribution(c *C) {
	_, err := s.collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Assert(err, ErrorMatches, "*.not found")

	c.Assert(s.collection.Add(s.repo1), IsNil)
	c.Assert(s.collection.Add(s.repo1), ErrorMatches, ".*already exists")
	c.Assert(s.collection.CheckDuplicate(s.repo2), IsNil)
	c.Assert(s.collection.Add(s.repo2), IsNil)
	c.Assert(s.collection.Add(s.repo3), ErrorMatches, ".*already exists")
	c.Assert(s.collection.CheckDuplicate(s.repo3), Equals, s.repo1)
	c.Assert(s.collection.Add(s.repo4), IsNil)
	c.Assert(s.collection.Add(s.repo5), IsNil)

	r, err := s.collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Assert(err, IsNil)

	err = s.collection.LoadComplete(r, s.factory)
	c.Assert(err, IsNil)
	c.Assert(r.String(), Equals, s.repo1.String())

	collection := NewPublishedRepoCollection(s.db)
	r, err = collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Assert(err, IsNil)

	err = s.collection.LoadComplete(r, s.factory)
	c.Assert(err, IsNil)
	c.Assert(r.String(), Equals, s.repo1.String())

	r, err = s.collection.ByStoragePrefixDistribution("files:other", "ppa", "precise")
	c.Assert(err, IsNil)
	c.Check(r.String(), Equals, s.repo5.String())
}

func (s *PublishedRepoCollectionSuite) TestByUUID(c *C) {
	_, err := s.collection.ByUUID(s.repo1.UUID)
	c.Assert(err, ErrorMatches, "*.not found")

	c.Assert(s.collection.Add(s.repo1), IsNil)

	r, err := s.collection.ByUUID(s.repo1.UUID)
	c.Assert(err, IsNil)

	err = s.collection.LoadComplete(r, s.factory)
	c.Assert(err, IsNil)
	c.Assert(r.String(), Equals, s.repo1.String())
}

func (s *PublishedRepoCollectionSuite) TestUpdateLoadComplete(c *C) {
	c.Assert(s.collection.Update(s.repo1), IsNil)
	c.Assert(s.collection.Update(s.repo4), IsNil)

	collection := NewPublishedRepoCollection(s.db)
	r, err := collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Assert(err, IsNil)
	c.Assert(r.sourceItems["main"].snapshot, IsNil)
	c.Assert(s.collection.LoadComplete(r, s.factory), IsNil)
	c.Assert(r.Sources["main"], Equals, s.repo1.sourceItems["main"].snapshot.UUID)
	c.Assert(r.RefList("main").Len(), Equals, 0)

	r, err = collection.ByStoragePrefixDistribution("", "ppa", "precise")
	c.Assert(err, IsNil)
	c.Assert(r.sourceItems["main"].localRepo, IsNil)
	c.Assert(s.collection.LoadComplete(r, s.factory), IsNil)
	c.Assert(r.sourceItems["main"].localRepo.UUID, Equals, s.repo4.sourceItems["main"].localRepo.UUID)
	c.Assert(r.sourceItems["main"].packageRefs.Len(), Equals, 0)
	c.Assert(r.RefList("main").Len(), Equals, 0)
}

func (s *PublishedRepoCollectionSuite) TestLoadPre0_6(c *C) {
	type oldPublishedRepo struct {
		UUID          string
		Prefix        string
		Distribution  string
		Origin        string
		Label         string
		Architectures []string
		SourceKind    string
		Component     string
		SourceUUID    string `codec:"SnapshotUUID"`
	}

	old := oldPublishedRepo{
		UUID:          s.repo1.UUID,
		Prefix:        "ppa",
		Distribution:  "anaconda",
		Architectures: []string{"i386"},
		SourceKind:    SourceLocalRepo,
		Component:     "contrib",
		SourceUUID:    s.localRepo.UUID,
	}

	var buf bytes.Buffer

	encoder := codec.NewEncoder(&buf, &codec.MsgpackHandle{})
	encoder.Encode(&old)

	c.Assert(s.db.Put(s.repo1.Key(), buf.Bytes()), IsNil)
	c.Assert(s.db.Put(s.repo1.RefKey(""), s.localRepo.RefList().Encode()), IsNil)

	collection := NewPublishedRepoCollection(s.db)
	repo, err := collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Check(err, IsNil)
	c.Check(repo.Component, Equals, "")
	c.Check(repo.SourceUUID, Equals, "")
	c.Check(repo.Sources, DeepEquals, map[string]string{"contrib": s.localRepo.UUID})

	c.Check(collection.LoadComplete(repo, s.factory), IsNil)
	c.Check(repo.sourceItems["contrib"].localRepo.UUID, Equals, s.localRepo.UUID)
	c.Check(repo.RefList("contrib").Len(), Equals, 0)
}

func (s *PublishedRepoCollectionSuite) TestForEachAndLen(c *C) {
	s.collection.Add(s.repo1)

	count := 0
	err := s.collection.ForEach(func(*PublishedRepo) error {
		count++
		return nil
	})
	c.Assert(count, Equals, 1)
	c.Assert(err, IsNil)

	c.Check(s.collection.Len(), Equals, 1)

	e := errors.New("c")

	err = s.collection.ForEach(func(*PublishedRepo) error {
		return e
	})
	c.Assert(err, Equals, e)
}

func (s *PublishedRepoCollectionSuite) TestBySnapshot(c *C) {
	c.Check(s.collection.Add(s.repo1), IsNil)
	c.Check(s.collection.Add(s.repo2), IsNil)

	c.Check(s.collection.BySnapshot(s.snap1), DeepEquals, []*PublishedRepo{s.repo1, s.repo2})
	c.Check(s.collection.BySnapshot(s.snap2), DeepEquals, []*PublishedRepo{s.repo2})
}

func (s *PublishedRepoCollectionSuite) TestByLocalRepo(c *C) {
	c.Check(s.collection.Add(s.repo1), IsNil)
	c.Check(s.collection.Add(s.repo4), IsNil)
	c.Check(s.collection.Add(s.repo5), IsNil)

	c.Check(s.collection.ByLocalRepo(s.localRepo), DeepEquals, []*PublishedRepo{s.repo4, s.repo5})
}

type PublishedRepoRemoveSuite struct {
	PackageListMixinSuite
	db                                  database.Storage
	factory                             *CollectionFactory
	snapshotCollection                  *SnapshotCollection
	collection                          *PublishedRepoCollection
	root, root2                         string
	provider                            *FakeStorageProvider
	publishedStorage, publishedStorage2 *files.PublishedStorage
	snap1                               *Snapshot
	repo1, repo2, repo3, repo4, repo5   *PublishedRepo
}

var _ = Suite(&PublishedRepoRemoveSuite{})

func (s *PublishedRepoRemoveSuite) SetUpTest(c *C) {
	s.db, _ = database.NewOpenDB(c.MkDir())
	s.factory = NewCollectionFactory(s.db)

	s.snapshotCollection = s.factory.SnapshotCollection()

	s.snap1 = NewSnapshotFromPackageList("snap1", []*Snapshot{}, NewPackageList(), "desc1")

	s.snapshotCollection.Add(s.snap1)

	s.repo1, _ = NewPublishedRepo("", "ppa", "anaconda", []string{}, []string{"main"}, []interface{}{s.snap1}, s.factory)
	s.repo2, _ = NewPublishedRepo("", "", "anaconda", []string{}, []string{"main"}, []interface{}{s.snap1}, s.factory)
	s.repo3, _ = NewPublishedRepo("", "ppa", "meduza", []string{}, []string{"main"}, []interface{}{s.snap1}, s.factory)
	s.repo4, _ = NewPublishedRepo("", "ppa", "osminog", []string{}, []string{"contrib"}, []interface{}{s.snap1}, s.factory)
	s.repo5, _ = NewPublishedRepo("files:other", "ppa", "osminog", []string{}, []string{"contrib"}, []interface{}{s.snap1}, s.factory)

	s.collection = s.factory.PublishedRepoCollection()
	s.collection.Add(s.repo1)
	s.collection.Add(s.repo2)
	s.collection.Add(s.repo3)
	s.collection.Add(s.repo4)
	s.collection.Add(s.repo5)

	s.root = c.MkDir()
	s.publishedStorage = files.NewPublishedStorage(s.root, "", "")
	s.publishedStorage.MkDir("ppa/dists/anaconda")
	s.publishedStorage.MkDir("ppa/dists/meduza")
	s.publishedStorage.MkDir("ppa/dists/osminog")
	s.publishedStorage.MkDir("ppa/pool/main")
	s.publishedStorage.MkDir("ppa/pool/contrib")
	s.publishedStorage.MkDir("dists/anaconda")
	s.publishedStorage.MkDir("pool/main")

	s.root2 = c.MkDir()
	s.publishedStorage2 = files.NewPublishedStorage(s.root2, "", "")
	s.publishedStorage2.MkDir("ppa/dists/osminog")
	s.publishedStorage2.MkDir("ppa/pool/contrib")

	s.provider = &FakeStorageProvider{map[string]aptly.PublishedStorage{
		"":            s.publishedStorage,
		"files:other": s.publishedStorage2}}
}

func (s *PublishedRepoRemoveSuite) TearDownTest(c *C) {
	s.db.Close()
}

func (s *PublishedRepoRemoveSuite) TestRemoveFilesOnlyDist(c *C) {
	s.repo1.RemoveFiles(s.provider, false, []string{}, nil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveFilesWithPool(c *C) {
	s.repo1.RemoveFiles(s.provider, false, []string{"main"}, nil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveFilesWithTwoPools(c *C) {
	s.repo1.RemoveFiles(s.provider, false, []string{"main", "contrib"}, nil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveFilesWithPrefix(c *C) {
	s.repo1.RemoveFiles(s.provider, true, []string{"main"}, nil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveFilesWithPrefixRoot(c *C) {
	s.repo2.RemoveFiles(s.provider, true, []string{"main"}, nil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveRepo1and2(c *C) {
	err := s.collection.Remove(s.provider, "", "ppa", "anaconda", s.factory, nil, false, false)
	c.Check(err, IsNil)

	_, err = s.collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Check(err, ErrorMatches, ".*not found")

	collection := NewPublishedRepoCollection(s.db)
	_, err = collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Check(err, ErrorMatches, ".*not found")

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)

	err = s.collection.Remove(s.provider, "", "ppa", "anaconda", s.factory, nil, false, false)
	c.Check(err, ErrorMatches, ".*not found")

	err = s.collection.Remove(s.provider, "", "ppa", "meduza", s.factory, nil, false, false)
	c.Check(err, IsNil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveRepo1and2SkipCleanup(c *C) {
	err := s.collection.Remove(s.provider, "", "ppa", "anaconda", s.factory, nil, false, true)
	c.Check(err, IsNil)

	_, err = s.collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Check(err, ErrorMatches, ".*not found")

	collection := NewPublishedRepoCollection(s.db)
	_, err = collection.ByStoragePrefixDistribution("", "ppa", "anaconda")
	c.Check(err, ErrorMatches, ".*not found")

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)

	err = s.collection.Remove(s.provider, "", "ppa", "anaconda", s.factory, nil, false, true)
	c.Check(err, ErrorMatches, ".*not found")

	err = s.collection.Remove(s.provider, "", "ppa", "meduza", s.factory, nil, false, true)
	c.Check(err, IsNil)

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveRepo3(c *C) {
	err := s.collection.Remove(s.provider, "", ".", "anaconda", s.factory, nil, false, false)
	c.Check(err, IsNil)

	_, err = s.collection.ByStoragePrefixDistribution("", ".", "anaconda")
	c.Check(err, ErrorMatches, ".*not found")

	collection := NewPublishedRepoCollection(s.db)
	_, err = collection.ByStoragePrefixDistribution("", ".", "anaconda")
	c.Check(err, ErrorMatches, ".*not found")

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), PathExists)
}

func (s *PublishedRepoRemoveSuite) TestRemoveRepo5(c *C) {
	err := s.collection.Remove(s.provider, "files:other", "ppa", "osminog", s.factory, nil, false, false)
	c.Check(err, IsNil)

	_, err = s.collection.ByStoragePrefixDistribution("files:other", "ppa", "osminog")
	c.Check(err, ErrorMatches, ".*not found")

	collection := NewPublishedRepoCollection(s.db)
	_, err = collection.ByStoragePrefixDistribution("files:other", "ppa", "osminog")
	c.Check(err, ErrorMatches, ".*not found")

	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/anaconda"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/meduza"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/dists/osminog"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/main"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "ppa/pool/contrib"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "dists/"), PathExists)
	c.Check(filepath.Join(s.publishedStorage.PublicPath(), "pool/"), PathExists)
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/dists/osminog"), Not(PathExists))
	c.Check(filepath.Join(s.publishedStorage2.PublicPath(), "ppa/pool/contrib"), Not(PathExists))
}

redpajama_set_name: RedPajamaGithub


What happens when intimate partner violence crashes into the workplace?
It's no secret to those who experience or work with intimate partner violence, that the violence often creeps (or crashes) into the workplace, either directly or indirectly by affecting the environment, the interactions, and the well-being of workers. But what do we do about it? Especially employers?
Workplaces Respond helps. It was created by Futures Without Violence, and helps with resources, education, and technical assistance to employers, survivors, co-workers and advocates to help create safer work places. Attorney Linda Seabrook, formerly with the U.S. Department of Justice, leads a number of legal programs and initiatives for Futures Without Violence, and she will join us to talk about creating safer workplaces free from domestic and sexual violence and stalking.


Put the right accent on your kitchen or bath.
We have a great selection of Mosaic, Herring bone, Natural stone, Porcelain, Multi textured and Glass that are trendy and tasteful for any Kitchen or Vanity back splash. So if you are about to undertake a renovation, why not take the decorating plunge and opt for a statement back splash.


We are looking forward to participating in The 18th International Conference on Electromagnetic Isotope Separators and Related Topics (EMIS-2018) which is being held at CERN, the European Organization for Nuclear Research, in Geneva, Switzerland from 16 to 21 September 2018.
Hosted by the Isotope Mass Separator On-Line facility (ISOLDE) at CERN, EMIS is the flagship conference series on techniques in the field of low-energy nuclear science and is the 18th conference in this series.
The conference will take place in the main auditorium at CERN and you will find us in the exhibitor space, situated in the main CERN building. Poster sessions and coffee breaks will take place in the same area.
For more details on the conference and to download the full programme, please visit the website.


One Day Sale! One Item, One Incredible Price!
Made in Italy and classic in design, the Prada BR2900 Tessuto Peonia (Hot Pink) designer handbag is made of Prada signature vela nylon with metal Prada logo emblems on the front and inside of the bag. The hot pink fabric interior is fully lined with Prada logo and has one small zippered pocket. The handbag's leather strap accents the silver hardware. Authenticity card and dust bag included.
This gorgeous Prada designer handbag retails for $625 but can be purchased at eDesignerShop for $229 however, for today (7/12) only you can snap up this gorgoeus Prada designer handbag for only $179, a saving of $446 to you. If this bag is hot for you then be the Devil, wear Prada. Visit eDesignerShop shop today to take advantage of this one day special designer handbag sale (7/12 Only!). Be even more of a devil and try using coupon code PRADA10 at checkout and maybe you can get an additional 10% off :) I'm not sure about this but heck getting this Prada designer handbag for just $161 is worth a try.


Q2. Document any 5 lines in the program using the hash symbol to the right of each line.
Q3. Add a comment block at the beginning of the program.
Q4. Write a new program to print out the numbers from 3 to 12 inclusive. Each number should be on a new line.
Q5. Write a new program to print out the numbers from 3 to 12 inclusive. Each number should be on the same line and separated by a space.
Q6. Print out the odd numbers between 30 and 40.
Q7. Write a list of 5 animals and print out the whole list with one instruction in Python.
Q8. Print out the list of animals in the question above so they are all on the same line and separated by a space.
Q9. Seperate answers out using the print('\n') instruction.
Q10. Write a list of 5 fruits and print them out. They should each be on their own line and seperated by three line spaces.


Today im bothering you with a question.
I bought a Kanger subtank plus from my local vapeshop, and i dont seem to get it to work in temp control. it currently runs in power wattage.
Im using a evic vtc mini (white). Usually, when i place a new coil or tank on my Evic, it recognises it as a new coil and i can ohms and stuff.
In this case, i cant lock the rezistance, i cant set it to run in temp control.
Installed on the kanger i have a OCC coilhead at 0.5 ohms.
i have tried everything in the tutorials from youtube, nothing seems to work. Im still at the start of my vaping experience, and i need some help.
Your coil is not a TC coil. There is a nickel coil for the Kanger. So do not run that in TC. Once you put the new coil on the Evic click three times to get into your settings ans set for TC. If you are having problems then go back to your local vape store. They will help you. Trying to vape a kanthal coil in TC is BAD. They should have explained the various coils available to you.
If this is an original Kanger OCC 0.5 ohm coil it can't. Congratulations to your clever device, it prevented you from doing so.
If your Subtank came with an RBA deck use that one. Buy some Ti wire and it will run fine in TC. I can also recommend TCR and SS wire.
ok i got it. so there will be no problem if i run the stock coils in power wattage right? thats what i was afraid of, not to damage the coil head by running it in power mode.
The coils that came with my Subtank are all for power mode.
One more thing. Don't fill the thank up to the brim. Better flavour and no leaking if you stop topping up 1 or 2 mm below the chimney.
(19-01-2016 04:17 PM)peter-k Wrote: The coils that came with my Subtank are all for power mode.


On Sunday I popped into the 'Grease' rehearsal and, on Monday, there was a 'Grease' assembly for the Second, Third and Fourth Forms. As a result, my appetite has been well and truly whetted and I am even more excited about seeing the production. The girls are fantastic!
I must mention the English Speaking Union Mace Round 1 Debate which took place at Prior's Field on Tuesday. Our team – Mabel O and Freya W – were two years younger than all the other teams competing and were chosen by the judges as one of the three teams to go through to the next round. This is an amazing result – I am so proud of the girls. Debating competitions are technical and fast-moving. They have shown incredible maturity and resilience to achieve this result and they should be very proud of themselves too.
On Wednesday we welcomed to Prior's Field a large number of Duke of Edinburgh volunteers from various local schools, for their regional training day. As you will know, the Duke of Edinburgh award scheme is very popular here and we were delighted to be able to support the professional development of teachers who spend so much time supporting young people who have signed up for the scheme. The skills and experience gained en route to the award, at whatever level, are invaluable in creating rounded, confident individuals keen to help others and to grab all the opportunities life offers. There are many pressures on our young people these days and I would encourage all our girls to engage with an activity like the Duke of Edinburgh award scheme, to ensure balance in their life and – particularly relevant today, when we are thinking of Children in Need everywhere – to help them appreciate the value of altruism to society.