text:
Adam Capewell Adrian Hayes Ai Ling Lim-Lee Alex Frost Alex Stephenson Alexander Kimber Álvaro Cabeza Álvaro Cabeza S.L Angharad Rolfe Johnson Anusha Arunasalam Barbara Rigby Catherine Wolfe Charlotte Martin Christopher Jones Claire Baldock Connor Thorogood Daniel Weston Daniela Paull Daryl Penny David Smitten Donna Trysburg Dr. Isabel Blanco Dra. Isabel Blanco Edward Morse Edward Ronan Emily Scott Emma Pitcher Felicity Hide Frances Baxter Georgia Stoneham Gillian Farmer Hannah Cramp Heather Ponsford Henry Schlaefli Howard Sands Jade Watt James Legg James Short Janne Flemming Jason Pelly Jay Janusz Jemma Jacobs Jennifer O'Farrell Jessica Guest Jo Newcombe Jo Pelly Joanna Peak John Wallace Jonathan Palmer Jonathan Pratt Jordan Waters Josephine Talbot-Ponsonby Joshua McFarlane Katherine Brown Lucy Cunningham Luke Portnow Malcolm Elkin Marcus Sims Martyn Draper Matthew Cornwell Matthew Ridley Matthew Spencer Megan Parker Michael C. Maier, LL.M. Michelle Pratt Nadia Tyler-Rubinstein Naomi Jenkins Naomi Stevens Natalie Barnard Neil Thomson Nicholas Widdowson Nick McLeish Nigel Tucker Nina White Olga Bohuszewicz Oliver Rutt Olivia Murray Paul Hicks Peter Vaughan Phil Merchant Rachel Conroy Ralph Flint Rhodri Kendrick Robert Waddingham Rohan Setna Roshani Muniweera Ross Chapman Sarah Gibson Sarah Le Mesurier Sarah Merrifield Sebastian Stephan Simon Binnie Simon Kahn Susi Fish Tessa Bucks Tony Pluckrose Veronika Brázdová Victoria Russell
Biotechnology and Life Sciences Chemical and Materials Engineering and Designs High Tech and Electrical Trade Mark and Domain Names
At our core, we help you protect, manage and enforce your IP rights on a global scale. We provide exceptional expertise where and when you need it.
Expertise home
Biotechnology and Life Sciences
Engineering and Designs
High Tech and Electrical
Trade Mark and Domain Names
Find an expert by name
UP and UPC resource
We are unwavering in our commitment to high standards of customer service. For us, service is about people, not just IP. This means responding to our clients with thought, care and understanding.
Filing and prosecution
Infringement and validity
Opposition and appeal
UP AND UPC
Licences and assignments
Search analysis
Records and renewals
Searching and watching
BoultRenew
Clients come to us because they enjoy the fact that we are an extension of their business. Meet your new team.
If you know the name of the attorney you need, start here.
Find an expert by group
Choose a group to learn more about the team and how to contact us.
We aim to keep you up-to-date with IP changes, sector news and information about our service. Delve into our insight library to get the latest knowhow.
Brexit Toolkit
Boult.bites
The UPC: 2020 and beyond
As 2019 drew to a close, a statement was issued by the Chairman of the UPC Preparatory Committee, Alexander Ramsay. As well as touching on progress made regarding the UPC case management system and recruitment campaign, the statement refers to an interview given by Mr Ramsay in which he provided his forecast for the UPC...
UPC update: "U" for uncertainty
Previously, the main obstacle to implementation of the Unified Patent Court and Unitary Patent system was the ratification of the UPC Agreement by Germany: German ratification was significantly delayed by a pending case at the German Constitutional Court which is scheduled for decision later in 2019. However, even if the decision of the German Constitutional...
Sign up to our updates
Signing up means you can keep on top of the latest IP updates and publications from our attorneys.
Be Brexit ready
Insights: English Patents Court Judgement provides much needed guidance on the scope of second medical use claims
Home > Insights > English Patents Court Judgement provides much needed guidance on the scope of second medical use claims
In an important judgement for the interpretation of second medical use claims in the UK, Mr Justice Arnold refused a request by Warner Lambert for an interim injunction against Actavis in relation to its plans to launch a generic version of the drug pregabalin (Warner-Lambert v Actavis [2015] EWHC 72 (Pat)). The request was based on Warner-Lambert's claim that Actavis would infringe its second medical use patent directed to pregabalin for treating pain. In refusing the request for interim relief, Arnold J held that the case did not raise a "serious issue to be tried". This judgement provides some much needed clarity in relation to the scope of protection conferred by second medical use claims.
Warner-Lambert (part of the Pfizer group) markets pregabalin (trade name Lyrica), a prescription-only drug, for three disorders: epilepsy, generalised anxiety disorder (GAD) and neuropathic pain. Patent protection for pregabalin itself expired on 17 May 2013 and Warner-Lambert's data exclusivity expired in July 2014 leaving the second medical use patent, EP(UK) 0 934 061 ("the Patent"), as the only barrier to generic companies. Actavis are on the verge of obtaining a marketing authorisation for generic pregabalin (Lecaent), which will be indicated only for epilepsy and GAD in its summary of product characteristics (SmPC), a so-called "skinny label". Warner-Lambert applied for an interim injunction requiring Actavis to take a number of steps to prevent Lecaent from being dispensed for treating pain.
Arnold J noted that in the UK, "[w]here a generic product such as Lecaent has been authorised on the basis that it is bioequivalent to a product such as Lyrica, the fact that the SmPC for the former omits an indication included in the SmPC for the latter does not prevent doctors from prescribing or pharmacists from dispensing the former for that indication". He therefore acknowledged that it is foreseeable that pharmacists will prescribe Lecaent for the treatment of pain (the patented indication), as well as for its approved indications, unless positive steps are taken to prevent this.
Relief sought by Warner-Lambert
It was considered more or less common ground between the parties that the best solution was to try to ensure that doctors prescribe Lyrica for the treatment of pain rather than prescribing the drug by reference to its international non-proprietary name or "INN" (pregabalin). However, as noted by Arnold J, changes to the prescribing practice of doctors and the NHS do not lie within the power of either Warner-Lambert or Actavis. Instead, Warner-Lambert sought relief that would require Actavis to:
1. make it a condition of any agreement with a pharmacy (or intermediary) that the pharmacy (or pharmacies supplied by the intermediary) shall use "reasonable endeavours" not to dispense Lecaent to patients who have been prescribed pregabalin for the treatment of pain;
2. notify Warner-Lambert's solicitors prior to any supply to an intermediary;
3. write a letter to the responsible superintendent pharmacist of each pharmacy to be supplied with Lecaent informing them that it should not be prescribed for treating pain and that Warner-Lambert have stated that pharmacists who choose to dispense Lecaent for this indication risk infringing the Patent;
4. ensure prior to launch that each pack of Lecaent supplied to a pharmacy has a removable notification that states "[t]his product is not authorised for the treatment of pain and must not be dispensed for such purposes";
5. notify NICE prior to first supply of Lecaent that it should not be prescribed or dispensed for the treatment of pain; and
6. write a letter to all Clinical Commissioning Groups (CCGs) in the UK, prior to first supply of Lecaent, providing similar information to the letter of point 3 (see above).
It is clear from the judgement that Arnold J did not consider that any of the measures 1-6 were likely to be particularly effective in ensuring that generic pregabalin was not dispensed for the treatment of pain. Nevertheless, with regard to points 3 and 6, Actavis had it seems agreed to write to pharmacies and CCGs. In relation to point 5, Arnold J considered that there was no point in Actavis writing to NICE as it was well aware of the position. Indeed, Warner-Lambert had already contacted NICE leading to the amendment of the relevant clinical guideline to include information about the Patent and the warning that "until such time as this patent expires generic pregabalin products will not be licensed for this indication [neuropathic pain] and their condition would be off-label and may infringe patent". The areas of dispute between the parties were in relation to point 1 ("contractual terms") and point 4 ("notice on the packaging").
In deciding whether to grant the interim injunction, Arnold J addressed the interpretation of claims 1 and 3 of the Patent, which are in the Swiss form. Following the line of reasoning set out by the EPO Board of Appeal in T1780/12, Arnold J explained that Swiss form claims, as process claims, have a different scope of protection to EPC2000 claims (or purpose-limited product claims), and that an assumption should not be made that comments made in the Judgement are equally applicable to EPC2000 claims. This represents a departure from previous English court judgements, some of which have suggested that no distinction will be made between these two forms of second medical use claim.
With respect to Warner Lambert's primary claim of direct infringement, the dispute between the parties was whether Actavis' activities would fall within the requirement of the Swiss claims that the pharmaceutical composition be "for treating (neuropathic) pain". It was accepted that Lecaent is suitable for treating (neuropathic) pain. However, in interpreting the term "for" in the Swiss claims, Arnold J held that the key question was whether this pharmaceutical composition was intended for treating (neuropathic) pain. This interpretation is consistent with the recent High Court judgement delivered in the case of Hospira UK Limited v Genentech Inc [2014] EWHC 1094, in which Birss J said that "[i]n this sort of claim "for" means "suitable and intended for"". Importantly, Arnold J went further and considered the following two questions: firstly, whose intention is relevant; and, secondly, what is meant by "intended"?
In relation to the first question, since the claims are to a process of manufacture (Swiss form claims), the relevant intention was held to be that of the person who carries out the process (i.e. Actavis or their manufacturer). As an aside, it is easy to see how this question might be answered differently for an EPC2000 claim; would the relevant intention for such a purpose-limited product claim still be only that of the manufacturer or would the intentions of others in the supply chain also be relevant?
In relation to the second question, Arnold J held that "the word "for" in Swiss form claims imports a requirement of subjective intention on the part of the manufacturer that the medicament or pharmaceutical composition will be used for treating the specified condition". In so doing he accepted arguments put forward by Actavis that the requirement for intention should not be satisfied by "foreseeability", or even by there being "actual knowledge" (on the part of the manufacturer), that the manufactured drug would be dispensed for a patented use. Since Warner-Lambert had not alleged "subjective intention" on the part of Actavis, it was concluded that the primary claim did not raise a "serious issue to be tried."
Warner-Lambert had also claimed for indirect infringement for which it needed to show that Actavis supplied "means, relating to an essential element of the invention, for putting the invention into effect". With regard to this claim, Arnold J commented that: "[t]here can be only be infringement under section 60(2) if there can be infringement by the person supplied or by a user further down the chain of supply (although it is not necessary for there actually to be an infringing act). This is not the case here, since no wholesaler or pharmacist will use Lecaent to prepare a pharmaceutical composition.". The observations on this point represent a very narrow and literal interpretation of Swiss claims, which would not appear applicable to EPC2000 claims. Therefore, following Arnold J's interpretation, EPC2000 claims would appear to prove a clear benefit over Swiss form claims with regard to establishing indirect infringement.
Despite concluding that Warner-Lambert's claim did not give rise to a "serious issue to be tried", Arnold J went on to consider the likely harm to Warner-Lambert if no relief was granted and the likely harm to Actavis if relief was granted. Regarding Warner-Lambert's position, he conceded that it was difficult to quantify the scale of the loss that Warner-Lambert would suffer in the period before an order is made at the full trial but was not convinced that it was likely to be substantial. He also speculated on the relief that Warner-Lambert might obtain if successful at trial noting that "it is difficult to see that Warner-Lambert could do any better than to obtain a final order requiring Actavis to put a notice on its packaging and to impose contractual terms on its customers". In contrast, Arnold J considered that Actavis would be likely to suffer substantial unquantifiable loss in two ways. Firstly, if it were forced to put a notice on the packaging, this would delay the entry of Lecaent onto the market. Secondly, the requirement to put a notice on its packaging and introduce contractual terms with regard to the dispensing of Lecaent would both be likely to deter pharmacists from stocking the drug, which would result in Actavis being excluded from the non-patented market.
Given the uncertainty surrounding the enforcement of second medical use claims internationally, this Judgement provides welcome guidance in the UK. However, many of the key questions remain unanswered including what is needed in order to show "subjective intention" on the part of an alleged infringer. Since the full trial is scheduled for June this year and Arnold J's judgement has been appealed, we can hope for more answers soon.
Matthew Spencer
mspencer@boult.com
CPC4 Capital Park
CB21 5XE
James Legg
jlegg@boult.com
An award-winning patent and trade mark firm delivering world-class advice to enhance the commercial value of intellectual property rights globally.
Signing up means you can keep on top of the latest IP updates publications from our attorneys.
Oxford office
John Eccles House
Robert Robinson Avenue
Oxford Science Park
Oxford OX4 4GP
RG1 2LU
*Munich office
Landsberger Strasse 155
*Meeting facilities only
Boult Wade S.L.
Avda. de Europa 26
Ática 5 Planta 2
28224 Pozuelo De Alarcón
Madrid Spain
Salisbury Square House
8 Salisbury Square
EC4Y 8AP
Oxford Reading Cambridge *Munich Berlin London Madrid
Client Guide
© Boult Wade Tennant LLP. 2020. European Patent and Trade Mark Attorneys, Chartered Patent Attorneys and Chartered Trade Mark Attorneys. Regulated by IPReg


text:
"""
Tests for the app manager.
"""
from biokbase.narrative.jobs.appmanager import AppManager
from biokbase.narrative.jobs.specmanager import SpecManager
from biokbase.narrative.jobs.job import Job
from IPython.display import HTML
import unittest
import mock
import os

class AppManagerTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.am = AppManager()
        self.good_app_id = 'NarrativeTest/test_input_params'
        self.good_tag = 'dev'
        self.bad_app_id = 'NotARealApp'
        self.bad_tag = 'NotARealTag'
        self.test_app_id = "AssemblyRAST/run_arast"
        self.test_app_params = {
            "read_library_names": ["rhodo.art.jgi.reads"],
            "output_contigset_name": "rhodo_contigs",
            "recipe": "auto",
            "assembler": "",
            "pipeline": "",
            "min_contig_len": None
        }
        self.test_job_id = "new_job_id"
        self.test_tag = "dev"
        self.public_ws = "wjriehl:1475006266615"
        self.ws_id = 11635
        self.app_input_ref = "11635/19/4"

    def test_reload(self):
        self.am.reload()
        info = self.am.app_usage(self.good_app_id, self.good_tag)
        self.assertTrue(info)

    def test_app_usage(self):
        # good id and good tag
        usage = self.am.app_usage(self.good_app_id, self.good_tag)
        self.assertTrue(usage)

        # bad id
        with self.assertRaises(ValueError):
            self.am.app_usage(self.bad_app_id)

        # bad tag
        with self.assertRaises(ValueError):
            self.am.app_usage(self.good_app_id, self.bad_tag)

    def test_app_usage_html(self):
        usage = self.am.app_usage(self.good_app_id, self.good_tag)
        self.assertTrue(usage._repr_html_())

    def test_app_usage_str(self):
        usage = self.am.app_usage(self.good_app_id, self.good_tag)
        self.assertTrue(str(usage))

    def test_available_apps_good(self):
        apps = self.am.available_apps(self.good_tag)
        self.assertIsInstance(apps, HTML)

    def test_available_apps_bad(self):
        with self.assertRaises(ValueError):
            self.am.available_apps(self.bad_tag)

    @mock.patch('biokbase.narrative.jobs.appmanager.clients.NarrativeJobService')
    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_good_inputs(self, m, njs):
        m.return_value._send_comm_message.return_value = None
        njs.run_job.return_value = self.test_job_id
        self.am.njs = njs
        os.environ['KB_WORKSPACE_ID'] = self.public_ws
        new_job = self.am.run_app(
            self.test_app_id,
            self.test_app_params,
            tag=self.test_tag
        )
        self.assertIsInstance(new_job, Job)
        self.assertEquals(new_job.job_id, self.test_job_id)
        self.assertEquals(new_job.app_id, self.test_app_id)
        self.assertEquals(new_job.tag, self.test_tag)
        self.assertIsNone(new_job.cell_id)

        job_run_input, kwargs = njs.run_job.call_args
        self.assertTrue(job_run_input[0]['wsid'] == self.ws_id)
        self.assertTrue(job_run_input[0]['source_ws_objects'] == [self.app_input_ref])

    @mock.patch('biokbase.narrative.jobs.appmanager.clients.NarrativeJobService')
    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_from_gui_cell(self, m, njs):
        m.return_value._send_comm_message.return_value = None
        njs.run_job.return_value = self.test_job_id
        self.am.njs = njs
        os.environ['KB_WORKSPACE_ID'] = self.public_ws
        self.assertIsNone(self.am.run_app(
            self.test_app_id,
            self.test_app_params,
            tag=self.test_tag,
            cell_id="12345"
        ))
        job_run_input, kwargs = njs.run_job.call_args
        self.assertTrue(job_run_input[0]['meta']['cell_id'] == "12345")
        self.assertTrue(job_run_input[0]['wsid'] == self.ws_id)
        self.assertTrue(job_run_input[0]['source_ws_objects'] == [self.app_input_ref])

    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_bad_id(self, m):
        m.return_value._send_comm_message.return_value = None
        self.assertIsNone(self.am.run_app(self.bad_app_id, None))

    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_bad_tag(self, m):
        m.return_value._send_comm_message.return_value = None
        self.assertIsNone(self.am.run_app(self.good_app_id,
                                          None,
                                          tag=self.bad_tag))

    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_bad_version_match(self, m):
        # fails because a non-release tag can't be versioned
        m.return_value._send_comm_message.return_value = None
        self.assertIsNone(self.am.run_app(self.good_app_id,
                                          None,
                                          tag=self.good_tag,
                                          version=">0.0.1"))

    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_missing_inputs(self, m):
        m.return_value._send_comm_message.return_value = None
        self.assertIsNone(self.am.run_app(self.good_app_id,
                                          None,
                                          tag=self.good_tag))

    @mock.patch('biokbase.narrative.jobs.appmanager.JobManager')
    def test_run_app_bad_version(self, m):
        m.return_value._send_comm_message.return_value = None
        self.assertIsNone(self.am.run_app(self.good_app_id,
                                          None,
                                          tag="dev",
                                          version="1.0.0"))

    def test_app_description(self):
        desc = self.am.app_description(self.good_app_id, tag=self.good_tag)
        self.assertIsInstance(desc, HTML)

    def test_app_description_bad_tag(self):
        with self.assertRaises(ValueError):
            self.am.app_description(self.good_app_id, tag=self.bad_tag)

    def test_app_description_bad_name(self):
        with self.assertRaises(ValueError):
            self.am.app_description(self.bad_app_id)

    def test_validate_params(self):
        inputs = {
            "reads_tuple": [
                {
                    "input_reads_label": "reads file 1",
                    "input_reads_obj": "rhodobacterium.art.q20.int.PE.reads",
                    "input_reads_metadata": {
                        "key1": "value1"
                    }
                },
                {
                    "input_reads_label": "reads file 2",
                    "input_reads_obj": "rhodobacterium.art.q10.PE.reads",
                    "input_reads_metadata": {
                        "key2": "value2"
                    }
                }
            ],
            "output_object": "MyReadsSet",
            "description": "New Reads Set"
        }
        app_id = "NarrativeTest/test_create_set"
        tag = "dev"
        prev_ws_id = os.environ.get('KB_WORKSPACE_ID', None)
        os.environ['KB_WORKSPACE_ID'] = self.public_ws
        sm = SpecManager()
        spec = sm.get_spec(app_id, tag=tag)
        (params, ws_inputs) = self.am._validate_parameters(app_id,
                                                           tag,
                                                           sm.app_params(spec),
                                                           inputs)
        self.assertDictEqual(params, inputs)
        self.assertIn('11635/9/1', ws_inputs)
        self.assertIn('11635/10/1', ws_inputs)
        if prev_ws_id is None:
            del(os.environ['KB_WORKSPACE_ID'])
        else:
            os.environ['KB_WORKSPACE_ID'] = prev_ws_id

    def test_input_mapping(self):
        inputs = {
            "reads_tuple": [
                {
                    "input_reads_label": "reads file 1",
                    "input_reads_obj": "rhodobacterium.art.q20.int.PE.reads",
                    "input_reads_metadata": {
                        "key1": "value1"
                    }
                },
                {
                    "input_reads_label": "reads file 2",
                    "input_reads_obj": "rhodobacterium.art.q10.PE.reads",
                    "input_reads_metadata": {
                        "key2": "value2"
                    }
                }
            ],
            "output_object": "MyReadsSet",
            "description": "New Reads Set"
        }
        app_id = "NarrativeTest/test_create_set"
        tag = "dev"
        ws_name = self.public_ws
        prev_ws_id = os.environ.get('KB_WORKSPACE_ID', None)
        os.environ['KB_WORKSPACE_ID'] = ws_name
        from biokbase.narrative.jobs.specmanager import SpecManager
        sm = SpecManager()
        spec = sm.get_spec(app_id, tag=tag)
        spec_params = sm.app_params(spec)
        spec_params_map = dict(
            (spec_params[i]['id'], spec_params[i])
            for i in range(len(spec_params))
        )
        mapped_inputs = self.am._map_inputs(
            spec['behavior']['kb_service_input_mapping'],
            inputs,
            spec_params_map
        )
        expected = [{
            u'output_object_name': 'MyReadsSet',
            u'data': {
                u'items': [{
                    u'label': 'reads file 1',
                    u'metadata': {'key1': 'value1'},
                    u'ref': '11635/9/1'
                }, {
                    u'label': 'reads file 2',
                    u'metadata': {'key2': 'value2'},
                    u'ref': '11635/10/1'
                }],
                u'description': 'New Reads Set'
            },
            u'workspace': ws_name
        }]
        self.assertDictEqual(expected[0], mapped_inputs[0])
        if prev_ws_id is None:
            del(os.environ['KB_WORKSPACE_ID'])
        else:
            os.environ['KB_WORKSPACE_ID'] = prev_ws_id

    def test_generate_input(self):
        prefix = 'pre'
        suffix = 'suf'
        num_symbols = 8
        generator = {
            'symbols': num_symbols,
            'prefix': prefix,
            'suffix': suffix
        }
        rand_str = self.am._generate_input(generator)
        self.assertTrue(rand_str.startswith(prefix))
        self.assertTrue(rand_str.endswith(suffix))
        self.assertEqual(len(rand_str), len(prefix)+len(suffix)+num_symbols)

    def test_generate_input_bad(self):
        with self.assertRaises(ValueError):
            self.am._generate_input({'symbols': 'foo'})
        with self.assertRaises(ValueError):
            self.am._generate_input({'symbols': -1})

    def test_transform_input_good(self):
        ws_name = self.public_ws
        os.environ['KB_WORKSPACE_ID'] = ws_name
        test_data = [
            {
                'value': 'input_value',
                'type': 'ref',
                'expected': ws_name + '/' + 'input_value'
            },
            {
                'value': 'input_value',
                'type': 'unresolved-ref',
                'expected': ws_name + '/' + 'input_value'
            },
            {
                'value': 'rhodobacterium.art.q20.int.PE.reads',
                'type': 'resolved-ref',
                'expected': '11635/9/1'
            },
            {
                'value': None,
                'type': 'int',
                'expected': None
            },
            {
                'value': '5',
                'type': 'int',
                'expected': 5
            },
            {
                'value': ['a', 'b', 'c'],
                'type': 'list<ref>',
                'expected': [ws_name + '/a', ws_name + '/b', ws_name + '/c']
            },
            {
                'value': ['rhodobacterium.art.q20.int.PE.reads',
                          'rhodobacterium.art.q10.PE.reads'],
                'type': 'list<resolved-ref>',
                'expected': ['11635/9/1', '11635/10/1']
            },
            {
                'value': 'foo',
                'type': 'list<ref>',
                'expected': [ws_name + '/foo']
            },
            {
                'value': ['1', '2', 3],
                'type': 'list<int>',
                'expected': [1, 2, 3]
            },
            {
                'value': 'bar',
                'type': None,
                'expected': 'bar'
            },
            {
                'value': 'rhodobacterium.art.q20.int.PE.reads',
                'type': 'future-default',
                'spec': {'is_output': 0, 'allowed_types': ["Some.KnownType"]},
                'expected': '11635/9/1'
            }
        ]
        for test in test_data:
            spec = test.get('spec', None)
            ret = self.am._transform_input(test['type'], test['value'], spec)
            self.assertEqual(ret, test['expected'])
        del(os.environ['KB_WORKSPACE_ID'])

    def test_transform_input_bad(self):
        with self.assertRaises(ValueError):
            self.am._transform_input('foo', 'bar', None)

if __name__ == "__main__":
    unittest.main()

redpajama_set_name: RedPajamaGithub


text:
Law of Love…Gospel of Peace
Published by D.J. Bulls in 148 - Three Gifts We Bring
Christmas, 2015, I wrote this post amidst a sea of unrest, politically and otherwise. In light of tragic events in our country and around the world, I find myself reflecting on it again this holiday season.
There has been a lot of swirling conversation going on around me, both physically and virtually, about what has gone on in the world around us…Syria, San Bernardino, Orlando, Jerry Falwell, Trump, Sexual Scandal In Hollywood and on Capitol Hill, Abuse of all kinds, terrorism…and on and on. This mounting and culmination of all these events and occurrences…like you, I've had enough and I needed a moment to just sit, be, listen and be quiet…in the quiet, I was overcome by the lyrics of one of the world's most beloved Christmas Carols…and I had to write a bit about it. A Carol of Adolphe Adam and Placide Cappeau, originally called Cantique de Noel, or "Oh Holy Night."
From the beginning, he was destined to follow his father in the family business (vinification and cooperage); but after an accident, he turned to the life of an academic. The accident occurred when he was eight years old, while "playing" with his friend Brignon. The young Brignon was handling a gun and shot Cappeau in the hand. This led to the young Cappeau having to undergo an amputation of his hand. Thanks to the financial support from Brignon who supplied half of tuition, Cappeau was able to attend a town school and was accepted into the Collège Royal d'Avignon. While there, in spite of his disability, he was awarded the first prize in drawing in 1825.
After studying in Nîmes, where he received a baccalauréat littéraire (A level in literature), he studied law in Paris and was awarded a license to practice law in 1831.
Following in his father's footsteps, to an extent, he became a merchant of wines and spirits. However, his focus in life was literature.
He is quoted as saying he wrote the poem "Minuit Chrétien" (O Holy Night) in a stagecoach on his way to Paris, between Mâcon and Dijon. Despite Adolphe Adam calling his tune "la Marseillaise religieuse" (The religious Marseillaise), Cappeau held often outspoken socialist and anti-clerical (secular) views. (hymnary.org)
The third verse of "Oh Holy Night" speaks of a world in which those who claim to follow Jesus are living out he calls all of his followers to in this subversive Gospel…
That Gospel is deeply rooted in Love of God and Love of Others…and so many claim the first part of that Call…the part about loving God. But the back half…well, I'm afraid some have given Christ a bad name in how we've lived that out in recent days, weeks and months…that love of "others" is not one we can or should place provisions or privileges on…it's an unconditional love for all of our brothers and sisters…
"Truly He taught us
to love one another;
His law is Love
and His gospel is Peace;
Chains shall he break,
for the slave is our brother,
And in his name
all oppression shall cease,
Sweet hymns of joy
in grateful Chorus raise we;
Let all within us praise
his Holy name!"
May we help bring this verse to a reality…may Life on earth come increasingly as it is in Heaven.
Come, Lord Jesus!
tags: Hymn Stories, Hymnody, Hymns, worship, Worship Planning
«Reggie McNeal to Address Kingdom Leadership at ElderLink Dallas
Rachel, Mary, and the Lament of the World»

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: How to get an external link to update google sheets automatically? I have been searching the internet for a while now and i can't really seem to find any answers for my query what i am looking for is this...
Runescape Grand Exchange Market
For example:~
Runite Bar Is "14,378 coins"
But it changes from time to time depending on the "game economy"
How can i use this number to auto update in google spreadsheet?
For example 1 bar is 14,378 coins. If i choose to put 2 Bars I would like the price of the item to be changed also so it's 28,756 coins.
What i have done at the moment is to make this Runite Bar you require certain items such as:
1. Runite Ore x1
2. Coal x8
I have set the value to auto update when i choose to purchase 100 Runite Ores It will automatically update how much Coal i need which would be "800" but what i want is to auto update the "PRICE" of the BAR
So if I choose to purchase:~

*

*300 Runite Ore (1) - 10,975 - i would like this also to be updated automatically.

*2400 Coal (x8)- 2,504 - i would like this also to be updated automatically.
Cost would be: 4,043,700 Coins - This is the total and should be updated automatically.
But if somebody tells me how to get price of an external site i can maybe do the Runite Ore & Coal myself i hope..lol
Runite Bar Website = Runescape Wikipedia - Rune Bar - as you can see it says "Exchange price" THAT is what i want in spreadsheet to be updated automatically.

*

*Best Regards

Antartika

A: Please try:
=substitute(left(index(importxml("http://runescape.wikia.com/wiki/Rune_bar","//td"),15,1),6),",","")*1

the //td part should import the entire table (the one in the middle of the page). It is XPath code that seems to me not at all well documented but ZVON might help.
index 15,1 then takes the fifteenth row and the first column (ie 14,573 coins) of that table. These are the parameters to change to select other cells from that table.
left strips off the coins part, but since a function that manipulates text results in a string, so the comma is a 'character' rather than formatting feature. However
substitute replaces the , with ""(ie with nothing) so that when we multiply by one (*1) we get a number that we can then multiply again by however many bars are involved.

redpajama_set_name: RedPajamaStackExchange


Love being a part of West Vliet and can't wait to see these beautiful signs up!
$40 donated by Tom Heinen of Interfaith Conference of Greater Milwaukee.
Great branding for a vibrant neighborhood!
I love everything that is happening on Vliet Street. From all the new and old businesses to all of the events for everyone to enjoy. No other place like it. Our own brand of uniqueness.


The Dry Lake Prospect is a mine located in Trinity county, California.
Analytical Data: ORE GRADE 3 TO 5 PERCENT MANGANESE, ABOUT 20 PERCENT IRON.
Geology Comment: GEOL.DESC: MANGANIFEROUS IRON ORE IN THIN-BEDDED CHERT, WHICH IS SURROUNDED BY GREENSTONE. CHERT STRIKE E. AND DIPS NEARLY VERTICAL. ORE ZONE IN 2 PARTS; 200 FT. LONG ON W. END, AND 150 FT. LONG ON E. END. BARREN ZONE 50 FT. LONG SEPARATES ORE ZONES.


LYNDEN, Wash. - April 15, 2019 - TelAve -- he Sales Lead Management Association (SLMA) announced the winners of the 2019 '20 Women in Business' leadership recognition program. SLMA CEO, James Obermayer, said "This is the ninth year of this leadership recognition program and the twenty women selected by the judges have many things in common. They have strong business accomplishments, service on business and non-profit boards, advanced degrees, and a record of giving back to their communities and industries. Many are speakers, writers, and authors. They have founded companies, and they work in manufacturing, agencies, software and services, and fulfilled roles as C-level executives, customer service, sales and marketing departments."


Well, I'm finally getting around to my last Reflections & Explorers Log for 2015. I learned a lot in 2015, and heading into 2016 with a new perspective. I'm closing the door on the most painful, challenging years of my life.
We mucked through these shallow channels to view the marvelous colors and rock and formations of Providence Canyon. These trickling waters continue to carve this canyon, and I feel a connection between this erosion and my life over the past few years. After my husband died (I know I mention it a lot. That's because it's a big deal.), I underwent some erosion and a huge canyon was carved in me. I do miss what used to be there – however, what has been revealed is magnificent.


You searched for Air Dryers? In FiltraGuide you find a list of companies offering Air Dryers. The company information to the search key Air Dryers is displayed free of charge to all users. Alternatively you can also search for further products and services.


Southern States and Capitals Elegant Us Maps Showing States Usa Road Map Fresh United States Map Game is free HD wallpaper. This wallpaper was upload at February 3, 2019 upload by goceng in .
Southern States and Capitals Elegant Us Maps Showing States Usa Road Map Fresh United States Map Game - We hope that , by posting this Southern States and Capitals Elegant Us Maps Showing States Usa Road Map Fresh United States Map Game , we can fulfill your needs of inspiration for designing your home. If you need more ideas to Bigasshotdog.com, you can check at our collection right below this post.


Primarily an agricultural town, Lebanon was settled in the late 1600s and incorporated in 1700. The combined farms, rolling fields, crystal lakes and historical landmarks create an idyllic pastoral setting for cozy rural living. Lebanon is certainly one of Connecticut's best kept secrets. This small, tight knit town offers recreational programs for all ages, including sports, summer playgrounds and special public events. The Lebanon Green is one of the largest in New England, measuring a full mile in length. The cultural and natural features of this quaint community have changed little since its incorporation. The area is dotted with charming bed and breakfasts, attractive country inns and motels. Lebanon's economy is supported by visitors seeking hiking, biking, cross-country skiing and the town's numerous antique shops, historic sites and museums. This stunning community is one of the select 25 towns on the Quinebaug-Shetucket Rivers Valley National Heritage Corridor. Created in 1994, this beautiful corridor is one of the last untouched and pristine areas in the Northeastern United States.


text:
1987-February-6
Community Awareness And The Role Of The Individual: Part 5
(Editor's note: The following article is from a lecture delivered December 13, 1986 in Gary, Indiana. This is the final installment.)
The first church for our people was the African Methodist Episcopal (A.M.E.) Church. How and why was that church founded? The whites would not treat us right in their church, so our people went out on their own and established their own church. That's how the first church for black people was established. That's history.
When the church was first opened, the black preacher was not allowed to preach by himself. A white man sat upon the rostrum with him. He had no role there except his presence. He didn't preach, "amen" or anything. He just sat there while the "nigger" preached, so the congregation won't think he can get uppity. The Caucasian didn't care if the preacher had the Bible or the Word of God. His view was that the preacher had God but "God ain't bigger than this authority I represent."
If The Preacher Did Wrong
And if he did wrong, they'd lock him, the Bible and all his holy sacraments and everything else up in jail. That's our history. That's why they don't want me talking to you in Gary, Indiana. They don't want me on the radio, they might seek to find Jesse Cooper or men out of there.
Anytime a people is afraid of something, it should open your eyes. Why be that afraid of me? They're more afraid of a good Muslim than they are of a Communist. They open their doors and cities up to Communists, but are terrified by the presence of a good Muslim in town. That should tell you that the ideology of the greatest consequence is not Communist ideology, it's Al-Islam.
It should tell you something anytime a whole system will mobilize itself, sensitize its citizens and hire stooges to help keep down the importance and presence of the true religion, Al-Islam.
Anytime a system would go this far, it should tell you that the precious idea is not Communism, but Al-Islam that can transform man into a dynamic, productive creature that won't be bought or sold.
Communism: A Property Of Men
Communism is a property of men. Al-Islam can never be a property of men, it's a property of Allah, and a man with bad intentions can't pick it up; if he picks it up, he can't hold it. He might pick it up accidentally, but when he sees he has it, he has to let it go. That's what they are afraid of.
Be aware of the propaganda. We have been conditioned just like the whole world has been conditioned. The people who wanted to play down the importance of the Qur'an Muhammad, and Al-Islam, worked the machinery of propaganda for centuries, and gave all kinds of false conceptions about our religion and our Prophet. Tried to make the people see it in some narrow, crazy heathen light.
Some woman called me on the radio and she said, "isn't your religion an 'ism'?" I had patience with her, but I sensed in her voice that her intentions were bad. She didn't fool me. When I first heard her voice, I said, this woman's got bad intentions, I didn't say that on the radio, but I knew.
Al-Islam Is Authentic
I said, it's a kindred religion with Christianity, Judaism Sabianism, and some other authentic, legitimate religions; it's just a religion.
She wasn't satisfied, so she asked me again, while constantly talking to cloud the issue, and smokescreen everything, so she could establish the image of us that she wanted the radio listeners to see.
So she was pretending to answer a question, but really she wanted time to cloud the issue, and to mar our already-marred and lied-against presence.
So, she said, "I just can't understand how come you just won't admit that yours is an 'ism.'" So I said, the word for religion in our Holy Book is "deen," and when it speaks on our religion, it uses the word "deen," and when it speaks of Christianity, it uses the word, "deen," when it speaks of Judaism, it uses the word "deen," it's "deen." I said, now, is Christianity an 'ism'?
She wouldn't answer me, because that would have meant that she was there for a legitimate cause. She couldn't answer me, because she didn't call for that. So I didn't expect her to answer me. I said, miss, Christianity is not an "ism", Judaism is not an "ism", our religion is not an "ism." It's a religion, and let it be like that. That ended the discussion.
Go To The Holy Book
If you are not seeing this religion for yourself from the pages of the Holy Qur'an, and the true life history of Prophet Muhammad, then you owe it to yourself to go to the Holy Book of the Muslims and to the true history of Muhammad written by believers and not by people who want to hide him from the world's eye, or distort what he was about.
If I want to know about Jesus Christ, should I read what atheists wrote about him?
I hope you can come into a situation where you can make free choices, to think and make decisions on your own. Not influenced by white America or by Negro America, but be influenced by what is right. But if you can't, then I won't weep forever. I don't think any of us should weep forever. We've got to move on.
Abandon The White Man's Plan
In my conclusion, know this: if you want to really gain respect, as a people in America, you have to stop going along with the plan that the white man had for himself. He didn't bring you here from Europe; he brought us here from Africa.
We are here and should be as independent of European life as the Chinese, Koreans, and Cubans. They are not totally absorbed in European heritage. You are not a European, your ancestors didn't come from Europe. You owe it to yourself to establish your own birthright, identity, ethnicity, feelings and way of thinking.
You owe it to yourself, to be something other than a white man because you're not a white man. You also owe it to yourself to look into your past, and recognize the great Islamic presence in your past.
Al-Islam Is Your Heritage
And if you're not ready to be a Muslim, at least say, this is my heritage, there is no way for me to know that I was the son of a great Muslim when they brought my ancestors here and put them in slavery. There is no way for me to know my genes didn't come from the loins of excellent Muslims in Africa; no way for me to know that.
In fact, there's a hell of a big chance that my genes did come from excellent Muslims. So even if I had no interest in becoming a Muslim, myself, I owe it to myself to cherish that heritage, even if I was a Christian, I should still invest in my own heritage.
The white man preserves things of his past that he's not today. He preserves them because that's his heritage. That's from his past. So what's wrong with the Christian churches spending some of that money, using some of that offering money to open up an Islamic cultural center, not because they are Muslims but because they see the need to have an identity. They know the need to preserve their heritage. What's wrong with that? "Aw, you can't do that. That's against church."
The Communists
But you can embrace communists. You can welcome communists in your life and into the United States, to share the blessings of this country; you welcome communists here who don't honor the Prophet Jesus. We Muslims honor him just like any other man sent from God. We honor him and his blessed mother; we honor them both. But you won't come near Muslims, yet you welcome a communist in your arms. You're a damn hypocrite! And I'm not speaking to you here, I'm speaking to America, the so-called majority of the preachers are nothing but hypocrites. They are frightened by the presence of Al-Islam and the presence of Muhammad. But they'll embrace a person who says they don't believe in God or care anything about religion. Embrace him and defend his right to the blessings of America. Dirty damn hypocrites. You don't even know the truth about yourself.
I'm Speaking To America
I'm not speaking to you few people here. I'm speaking to America. I hope it'll get out there to them — it will. Believe me, everything I say gets out. It gets out in high quarters. Not to the drunk out there in the street; he'll never hear it.
When are we really going to be men and women? We are afraid to believe something that is not approved by white society, unless it's something ridiculous that won't upset white society. We have become a reared nut who'll change our whole lifestyle, even talk backwards. They'll find a way to reverse the language, they'll record it in reverse. We'll do anything for attention, as long as it doesn't bring the wrath of white society on us. But if we think that it's not going to be welcomed by white American society, that they may look at us and take us seriously, as a problem, then we are not ready for it. Cowards.
You know that nobody's going to bother you if you start acting like a fool; nobody's going to seek to persecute you or arrest you for acting like a fool. But invite you to something sensible, and dignified that may cause some friction in the society: "aw, I can't do it." But you'll risk your life to sell dope, and stick up innocent people, rob banks you'll do that, because it doesn't require any constructive thinking on your part. It gives your life to a gamble. It doesn't require any moral discipline on your part. It's not good. You can't put up with that always.
So I pray that Allah strengthens the true believers and make them more courageous and aggressive, with the truth. Don't come to these cities and allow people to put you back on the shelf, to put you in the background and pretend that Muslims are dead.
Don't allow them to say "Them Muslims don't have anything anymore, they've gone out of business."
Demand the same presence and respect that they give Christians.
The law of this country protects our freedom of religion the same as it protects the Christian's freedom of religion. There is nothing on the law book to say freedom of religion in this country is freedom for Christianity. It's freedom for religion.
And whether you have the courage to take advantage of your rights or not, you have the same freedom to be a Muslim in his country, as Christians have to be Christians in this country, and I, for one, tell them, and they know that I am determined not to back up. I don't back up from anybody. My religion is legit. My values are excellent. My religious ideas are pure. My religious aspirations are honorable.
And you should be the same way. Don't back up from anybody.
In concluding this, I say again, that what we've done is sensitized the audience, to accept the changes that have come about, and first of all, a change within ourselves, to be upright, honest and well-meaning, and the excellent creature that God made us. To accept responsibility and to accept authority. Don't wait for the world to come and rescue you. Do what you're supposed to do. Do what God created you to do. Get up and prepare yourself to rescue the world. As-Salaam-Alaikum.


One of the upsides of internet too slow to watch Netflix is lots of time to read. I brought a few books down with me and I'm working through them slowly, as I also try to stay current on the New Yorker, a near sisyphean task. I also got some books as gifts when my parents came down (books are the best gifts) and I love … Continue reading I finally have time to read!
A Guest Post from my Dad: She's Going Where?
My dad reflects on our family visit to Guatemala Continue reading A Guest Post from my Dad: She's Going Where?


Summary: David Vitter's SuperPAC is lying about John Bel Edwards' support for the Keystone XL pipeline. Less than 24 hours after John Bel said on statewide television that he supports the Keystone XL pipeline, a pro-Vitter SuperPAC is lying to Louisianians.
Louisiana TV stations should immediately take down this ad, which is further proof that David Vitter is running a desperate, lie-filled campaign. Vitter continues to be unrestrained by the truth.


As an entrepreneur I'm always interested to keep an eye on new start-ups. You never know what will be the next Facebook or Airbnb! There's a lot even the most seasoned business people can learn from up and coming companies, particularly when it comes to creative thinking and taking chances.
With 6 of the top 10 startups coming from the U.S1 - it's also pretty exciting to try and predict which will become a unicorn - a start-up valued at over $1 billion.
Here are a few of the start-ups I've got my eye on at the moment.
Patreon has been up and running for just three years and has attracted over $17 million from investors. It's a simple idea, offering photographers, musicians, and authors a platform to set up a page for their work and build up a fanbase. Fans can then make donations to their favorite artists, effectively becoming patrons. It's become particularly popular with YouTube stars and is a great example of finding new ways to tap into not one but two trends - crowdfunding and YouTubing.
Ever wondered how much people in the same job as you get paid elsewhere? Comparably can help you find out. Founded by tech entrepreneur Jason Nazar, it's a rival to Glassdoor and even aims to take on LinkedIn one day. As well as salary details it also gathers data on company benefits and people's experiences with their employers.
As someone who spent a year subscribed to a magazine I never read and has been known to pay hundreds of dollars for my annual gym visit, the idea behind Truebill - a company which aims to help people manage their online subscriptions - really caught my imagination. Founder Yahya Mokhtarzada was inspired when he found he'd accidentally subscribed to Gogo for a year - at a not insignificant cost. Truebill works by linking with people's bank accounts to identify subscriptions they don't want and helping cancel them. It attracted funding from Facebook executive David Marcus and now has over 12,000 users. Not bad.
San Francisco start-up Recharge is giving people a unique opportunity to break up their day with a nap, by partnering with hotels to rent out rooms by the hour or even minute. You can book in seconds via an app and check-out whenever you want. And it's not just naps on offer; people are using the spaces for post-run showers or just to take a break if they have a hectic day. It may seem a bit of an out-there idea but I can see this really catching on.
The food delivery space is pretty crowded thanks to the likes of GrubHub, Seamless and Munchery. But delivery-only restaurant Maple is making its own mark. The premise is a simple one - meals created by top chefs are cooked in central kitchens and then delivered straight to customers' doors. Currently it's only available in New York but a few of my friends can't wait for it to expand so they can impress their guests at the next dinner party they throw. It's great to see a new company launching a high-end product and taking its time to get its offering just right.
Everyone loves an underdog and ClassPass is a great example of a company that completely changed its fortunes by altering its business model.
Originally an app-based gym membership platform it started offering a one-month pass that let people try 10 classes from 10 different studios as a last ditch effort to bring in customers - and the rest is history.
Today, the Google Ventures-backed upstart employs 300 people and connects customers with exercise classes at some 3,000 boutique gyms and participating studios in 30-plus cities across the U.S, Canada, Europe and Australia. Pretty impressive.
The companies I mention or link to in this post are just examples that I thought you'd find useful - I don't endorse them or their services. I have no affiliation with them and make no representation about their services.


One of the most compelling book titles I've ever come across is Jeffrey Sach's "The End of Poverty." An American economist, he argues that extreme global poverty could be eliminated through carefully planned development aid, and through helping the poorest countries reach the "bottom rung" of the ladder of economic development.
I read the book in 2005, and enjoyed interacting with the topic from his perspective. It was controversial – any book that makes a claim as audacious as this would be – but the premise was certainly compelling.
Though his premise may have been controversial within the realm of economists, the idea of ending poverty is not one that readers of the Christian Bible could argue with. This vision appears throughout Scripture.
Rodney Stark is a professor of sociology at the University of Washington, and he wrote an influential book called "The Rise of Christianity." The subtitle foreshadows his premise: "How the Obscure, Marginal Jesus Movement Became the Dominant Religious Force in the Western World in a Few Centuries." In the book he makes a fascinating case that this very aspect of Christianity – the call to address, alleviate, and even eliminate poverty – was quite possibly the single most important dynamic that led to the incredible growth of Christianity in its early days (see a helpful summary of it here).
This concept is very central to the vision of River City.
When I pray and dream about ways in which God may use our church, this is front and center. By God's grace, I believe that we could experience something similar to the early church. I pray that we could see and experience the end of poverty.
I'm not naive enough to think we can end poverty in the whole world, or even in our own city. It's probably too ambitious to hope to end poverty even in a whole neighborhood.
That's intriguing to me. The Bible doesn't say that the problem of poverty was solved on every corner of the globe. Instead, the Bible talks about the end of poverty in a very localized way. Wherever the people of God were located together, poverty disappeared (or at least was supposed to).
When I use a phrase like "the end of poverty," I do so with a clear sense of how loaded it is. There are many different perspective on what poverty is, and even more opinions as to how to comprehensively address it. There are all kinds of historical forces that have shaped the current version of American poverty, and it is a history filled with dynamics of power, privilege, and race. There are many people who feel like its paternalistic for a white male to even use the phrase in the first place.
I understand all of that. I have been aware of and (hopefully) sensitive to these dynamics as I've wrestled with this concept for the past 12-15 years. I have sat under a lot of mentors and interacted with a lot of ideas. I've seen poverty up close for a while now, and I see how vicious the cycle of poverty can be. It's a complicated topic with a lot of sharp edges.
I believe to the core of my being that this is part of God's dream. I believe that when the energy of Heaven was released through the risen and resurrected Jesus Christ, poverty was one of the clearest societal problems that his followers were sent to dismantle. I believe that one of the clearest signs of a vibrant Christian community is a united attack against the vestiges of systemic poverty. I believe that one of the healthiest dynamics of a Christian community is when a relational core is established that is built across the full socioeconomic spectrum.
That is why "the end of poverty" is something that belongs in the conversation of River City's three vision pillars of worship, reconciliation, and neighborhood development. Our community has taken on its most substantial risk in our 10+ year history. We have purchased a 12,500 square foot building that we are now renovating to become a church and community center.
The path of least resistance would have been to move further east from our current location, and to settle into a cozy and comfortable location. Instead, we have chosen to make our long term home at the most intense cross-section of race and poverty in our neighborhood… and one of the most intense in the whole city.
Why would we make a decision like this?
Because we believe God has called us to stand on the shoulders of those that have gone before us – the men and women of faith, valor, and courage… the faith communities that took seriously the call to love, justice, and shalom. We stand together, each with our own set of strengths and weaknesses, and we take seriously the call to participate in the ministry of Jesus Christ, as he establishes and advances the kingdom of God in our day and age.


The healthcare conglomerate finally overcame currency impacts to produce top- and bottom-line growth.
Among healthcare companies, it's hard to find a match for Johnson & Johnson (NYSE:JNJ). Its impressive scope encompasses the over-the-counter consumer remedy market as well as the medical device arena, but J&J's biggest source of growth lately has come from the pharmaceutical space. Even as it works to compete against Pfizer (NYSE:PFE) and other big pharma names, Johnson & Johnson has had to fight against the strength of the U.S. dollar and its downward impact on its financial results.
Coming into Tuesday's first-quarter financial report, investors in Johnson & Johnson had hoped the company would be able to get things moving in the right direction again, and positive results on sales and earnings per share showed its success in doing so. Let's take a closer look at Johnson & Johnson's latest results and what you should learn from them.
Johnson & Johnson's first-quarter financials showed some positive signs that investors haven't seen in a long time. Revenue for the quarter inched upward by 0.6% to $17.48 billion, exactly matching the consensus forecast among investors, but more importantly finding a way to produce any growth at all. Adjusted net income was up 6% to $4.69 billion, and that produced adjusted earnings of $1.68 per share, beating analyst estimates by $0.03 per share.
What's remarkable is that Johnson & Johnson managed to overcome what are still considerable currency headwinds to produce growth. Overall, the U.S. dollar's strength cost J&J 3.3 percentage points of potential revenue growth, including a 6.6-point hit in its international business. The effect was most pronounced in the consumer segment, where international sales took a 9.3 percentage-point reduction from currency impacts. The foreign-exchange impact hid a nearly 4% rise in revenue based on operations.
As we've seen in past quarters, J&J's pharmaceutical segment continued to outpace its counterparts. First-quarter revenue for the unit rose almost 6% compared to declines of 2.4% in medical devices and 5.8% in consumer. Even in the U.S. market, domestic consumer revenue fell slightly from year-ago levels, pointing to the unit's general weakness. Globally, the Western Hemisphere outside the U.S. showed the most vulnerability to currency-induced contraction, while the Asia-Pacific and Africa geographical segment held up the best.
Johnson & Johnson pointed to many of the usual suspects in driving growth: Consumer painkillers Tylenol and Motrin, prescription drugs Imbruvica and Xarelto, and cardiovascular devices in the medical-device segment were among the positive contributors to Johnson & Johnson's overall success.
Can Johnson & Johnson stay healthy?
J&J CEO Alex Gorsky summed up the quarter in general terms: "Our pharmaceuticals business continues to deliver impressive levels of growth," Gorsky said. "We have steady improvement in our consumer business, and we are seeing momentum in our medical devices businesses, all of which are fueling our optimism for the full year ahead."
Johnson & Johnson also rewarded investors with improved guidance. The healthcare giant boosted its sales predictions by $400 million to a new range of $71.2 billion to $71.9 billion. A dime-per-share improvement on the earnings front brought J&J's new guidance to $6.53 to $6.68 per share.
One interesting thing about the approach Johnson & Johnson has taken is that it hasn't focused as much on major acquisitions as some of its rivals. Pfizer, for instance, is currently going through the disruptive event of having to back away from its proposed buyout of Allergan, which U.S. regulators specifically targeted in changing requirements for mergers that use tax-inversion strategies to reap benefits for shareholders. Pfizer has shied away from embracing its legacy products business, even as Johnson & Johnson embraces its long history and its consumer brand awareness. That gives J&J an advantage over Pfizer, even though both rely on the health of the prescription-drug space overall for their livelihood.
Investors were pleased with Johnson & Johnson's results, sending the stock up 2% in early trading after the announcement. If the dollar continues to have less of an impact on the company's top- and bottom-line growth, then Johnson & Johnson could well see its gains accelerate throughout the rest of 2016.


Professor Beisner is on the faculty at Covenant College, Lookout Mountain, Georgia and is the author of Prospects for Growth: A Biblical View of Population, Resources, and the Future (Wheaton: Crossway Books, 1990). He has done research into global environmental trends for over eight years.
Lately thousands of people across America, including me, have received a mailing asking us to become members of The Christian Society of the Green Cross, a new organization addressing ecological problems. People should think hard before joining or donating.
The recruitment/fundraising letter tries to establish the need for the organization by making claims about ecological crises. The claims are, without exception, subject to serious doubt.
• Since 1945, Americans have consumed more of the world's resources than have all previous generations who have ever lived on the planet put together. "We have used more than our fair share" (emphasis original). Here's a new twist on an old complaint. Ordinarily we are told that Americans use "more than our fair share" of the world's resources because we use more per capita than people in other countries. Now it is because we use more than our ancestors used. In either case, the argument is a classic non sequitur.
Americans do use more of some resources per capita than people in most other countries. And we do use more per capita than people of the past. But we also produce more resources per capita than people in most other countries and than people of the past. And, indeed, we consume no more than we produce. The long-term downward real price trends (for a truly representative example, inflation-adjusted copper prices fell by about 70 percent, and its price divided by wages by about 99 percent, from 1801 to 1990) of extractive raw materials (mineral, plant, and animal) show that our consumption of resources neither is outpaced by our production of them nor interferes with the ability of others to consume or produce them. In this case, the empirical claim (a misleading one at that) is logically irrelevant to the moral charge based on it.
• "Every day Americans turn 9 square miles of rural land over to development." Precisely what this means is difficult to guess, since—depending on who uses the term—"development" might mean making anything from a housing tract to a park. Furthermore, such raw numbers become significant only when set in a larger context.
The United States comprise 3,536,338 square miles of land, of which about 97 percent is undeveloped ("developed" land being defined by the U.S. Bureau of the Census as including urban and built-up areas in units of ten acres or greater, plus rural transportation). The conversion of 9 square miles of rural land each day therefore translates into 3,285 square miles per year. At that rate, total undeveloped land would be reduced by only about 9 percent—to about 88 percent of total land—in a hundred years.
Actually, the Green Cross's land-conversion figure is probably low. From 1960 to 1990 the conversion rate was about double what the Green Cross claims as the present trend. But there is good reason to expect that as U.S. population stabilizes and continues to become more concentrated in cities the conversion rate will fall yet more. Also, from 1960 to 1990, during the same period as the rapid conversion to developed land, the National Wildlife Refuge system grew from about 15 million acres in 1960 to about 95 million acres in 1988; the National Parks system from about 20 million to about 70 million acres; and total public recreation lands from about 225 million to about 375 million acres. Certainly the data do not indicate a crisis of land conversion.
• "Every year, our agricultural practices waste over 1,000,000 acres of topsoil through erosion." We cannot know what the Green Cross means by "wasting" an "acre" of topsoil. Taken literally, their statement implies that every year erosion eliminates about a million acres of usable agricultural land. But that is certainly not true.
Probably this clumsily worded claim is meant to convey information about an amount of topsoil lost per year through erosion from all acres under cultivation. But it fails to communicate because topsoil is not measured in simple acres but in tons or cubic feet. (An acre of topsoil 1/16-inch thick, after all, is considerably less by weight and volume than an acre of topsoil 5 inches thick.) Nor does this statement tell us whether this is gross or net loss.
The latter distinction is crucial. Because of routine erosion-control measures, on almost all cropland in the United States new topsoil formation (from the combination of plant fiber decay and breakdown of deeper, denser soil and rocks) roughly matches loss from erosion, yielding almost no annual net change in topsoil. This is consistent with the fact that over the last 50 years higher and higher percentages of U.S. cropland have met the "prime" grade according to the U.S. Soil Conservation Service and with rising yields per acre. It should be no surprise. After all, soil is the farmers' most important resource; it is to be expected that they would use that resource wisely.
• "As there are more people, there is less farmland on which to grow food." The implication is that there is a cause and effect relation between the first and second halves of this sentence, but in fact there is not. American farmers plant fewer acres not because there are fewer acres available to plant but because agricultural production is so high that prices won't support cultivating more acres. While harvested U.S. cropland declined by 11 percent from 1978 through 1987, total crop production rose by about 25 percent. Thus, total yield rose by about 40 percent.
• "We are using up our [agricultural] resources in a way that cannot continue." Rising yields, declining losses from erosion, and rising quality of our nation's agricultural soils indicate precisely the opposite.
• "Within the lifetime of a child born in this decade, virtually all of the world's petroleum will be burned." The same sort of predictions have been made about running out of oil for nearly a century, and always they have proved false. They are contradicted by (a) failing long-term real prices of petroleum (down about 70 percent from 1870 to 1990) and (b) rising world oil reserves (up from about 100 billion barrels in 1943 to about 10 trillion barrels in 1989).
• "Still common minerals will be exhausted [in a lifetime], such as copper, tin, zinc, lead and nickel." But as for petroleum, so also here falling long-term real prices and rising reserves indicate the opposite. Despite intervening consumption, known reserves of copper rose by 179 percent from 1950 to 1970; of tin, by 10 percent; and of lead by 115 percent. I don't have handy access to figures for nickel, or to more recent figures for any of the minerals named, but I am confident, on historical and theoretical grounds, that we face no reasonable prospect of exhausting any of these minerals.
• "Water is increasingly tainted with chemicals." But in fact, the vast majority of these chemicals are harmless, and the percentage of the world's people with access to safe water has risen dramatically in the last century and continues to rise with increasing speed.
• "Over 60 percent of the world's great forests have been cut." Yes, and 100 percent of last year's wheat crop was cut in a single year! Yet next year there will be a whole new crop. Forests and wheat are analogous; the principal difference is that trees grow larger and more slowly. What the Green Cross alarmists don't mention is that total world forested area and total growing board feet of wood both are greater now than they were 50 years ago-and on the increase. And as plantation forestry increasingly replaces harvesting natural forests, pressure on natural forests will decline even More.
• "Atmospheric levels of heat-trapping carbon dioxide are 26 percent higher than pre-industrial concentrations and continue to climb; the results will be higher temperatures." Perhaps (data for the past are debatable), perhaps (data for the future are not yet in and projections differ widely), and perhaps (climatologists differ in their estimates of how much and whether global average temperatures will rise based on various assumptions of carbon dioxide increase).
But the letter does not mention (a) that roughly two-thirds of the apparent .45 degree C. increase in global average temperatures between 1880 and 1990 was attributable to natural causes, (b) that almost all of the total increase occurred before 1940, i.e., before the sharpest increases in carbon dioxide, indicating that there is not a direct correlation between carbon dioxide and temperature, and (c) that the most recent and refined models predict that most temperature increase will occur in the winter and at night, yielding little or no detrimental effect on ice caps, sea levels, and agriculture, and at the same time yielding slightly longer growing seasons, better agricultural yields with less water consumption (from higher carbon dioxide concentrations, crucial to photosynthesis and water retention), and less need for heating in winter.
• ". . . the result is increases in skin cancers." No reliable data back this claim. Furthermore, the skin cancer associated with increased ultraviolet B exposure (resulting from ozone depletion) is mostly nonmalignant, and the increased cancer risk associated with the worst-case ozone depletion scenarios is about equivalent with the increased risk involved in moving 60 miles nearer the equator or a thousand feet higher in elevation—a risk so small as not to figure in the vast majority of decisions about where to live.
The coastal forests of Brazil have been reduced in area as severely as any tropical forest type in the world. According to calculation, this should have led to considerable species loss. Yet no known species of its old, largely endemic, fauna can be regarded as extinct. Genetic erosion has undoubtedly taken place, and the reduced, remnant populations may be much more vulnerable to future change, but the study illustrates the need for very careful field documentation to compare with calculation in this and other situations.
Repeatedly the book's many authors state that, expectations to the contrary, field evidence for extinctions in recent decades is slight to non-existent.
None of the above implies either that Christians have no stewardship responsibility for the earth or that real problems don't exist. There are real problems, and Christians do have responsibility. But the assignment of stewardship over the earth was given in the Garden of Eden; claims of crisis, true or bogus, are unnecessary to remind Christians of that calling. And when an organization cries "Wolf!" too frequently, it loses credibility.


text:
set -eu

# Main deploy functions for the continuous build system
# Just source this file and use the various method:
#   bazel_build build bazel and run all its test
#   bazel_release use the artifact generated by bazel_build and push
#     them to github for a release and to GCS for a release candidate.
#     Also prepare an email for announcing the release.

# Load common.sh
BUILD_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$(dirname ${BUILD_SCRIPT_DIR})/release/common.sh"
source "$(dirname ${BUILD_SCRIPT_DIR})/release/relnotes.sh"

if ! command -v gsutil &>/dev/null; then
  echo "Required tool 'gsutil' not found. Please install it:"
  echo "See https://cloud.google.com/sdk/downloads for instructions."
  exit 1
fi
if ! command -v github-release &>/dev/null; then
  echo "Required tool 'github-release' not found. Download it from here:"
  echo "https://github.com/c4milo/github-release/releases"
  echo "Just extract the archive and put the binary on your PATH."
  exit 1
fi
if ! command -v debsign &>/dev/null; then
  echo "Required tool 'debsign' not found. Please install it via apt-get:"
  echo "apt-get install devscripts"
  exit 1
fi
if ! command -v reprepro &>/dev/null; then
  echo "Required tool 'reprepro' not found. Please install it via apt-get:"
  echo "apt-get install reprepro"
  exit 1
fi
if ! command -v gpg &>/dev/null; then
  echo "Required tool 'gpg' not found. Please install it via apt-get:"
  echo "apt-get install gnupg"
  exit 1
fi
if ! command -v pandoc &>/dev/null; then
  echo "Required tool 'pandoc' not found. Please install it via apt-get:"
  echo "apt-get install pandoc"
  exit 1
fi
# if ! command -v ssmtp &>/dev/null; then
#   echo "Required tool 'ssmtp' not found. Please install it via apt-get:"
#   echo "apt-get install ssmtp"
#   exit 1
# fi

export APT_GPG_KEY_ID=$(gsutil cat gs://bazel-trusted-encrypted-secrets/release-key.gpg.id)

# Generate a string from a template and a list of substitutions.
# The first parameter is the template name and each subsequent parameter
# is taken as a couple: first is the string the substitute and the second
# is the result of the substitution.
function generate_from_template() {
  local value="$1"
  shift
  while (( $# >= 2 )); do
    value="${value//$1/$2}"
    shift 2
  done
  echo "${value}"
}

# Generate the email for the release.
# The first line of the output will be the recipient, the second line
# the mail subjects and the subsequent lines the mail, its content.
# If no planned release, then this function output will be empty.
function generate_email() {
  RELEASE_CANDIDATE_URL="https://releases.bazel.build/%release_name%/rc%rc%/index.html"
  RELEASE_URL="https://github.com/bazelbuild/bazel/releases/tag/%release_name%"

  if [ "$(is_rolling_release)" -eq 1 ]; then
    echo "No emails for rolling releases"
    return 0
  fi

  local release_name=$(get_release_name)
  local rc=$(get_release_candidate)
  local args=(
      "%release_name%" "${release_name}"
      "%rc%" "${rc}"
      "%relnotes%" "# $(get_full_release_notes)"
  )
  if [ -n "${rc}" ]; then
    args+=(
        "%url%" "$(generate_from_template "${RELEASE_CANDIDATE_URL}" "${args[@]}")"
    )
    generate_from_template \
        "$(cat "${BUILD_SCRIPT_DIR}/rc_email.txt")" \
        "${args[@]}"
  elif [ -n "${release_name}" ]; then
    args+=(
        "%url%" "$(generate_from_template "${RELEASE_URL}" "${args[@]}")"
    )
    generate_from_template \
        "$(cat "${BUILD_SCRIPT_DIR}/release_email.txt")" "${args[@]}"
  fi
}

function get_release_page() {
    echo "# $(get_full_release_notes)"'

_Notice_: Bazel installers contain binaries licensed under the GPLv2 with
Classpath exception. Those installers should always be redistributed along with
the source code.

Some versions of Bazel contain a bundled version of OpenJDK. The license of the
bundled OpenJDK and other open-source components can be displayed by running
the command `bazel license`. The vendor and version information of the bundled
OpenJDK can be displayed by running the command `bazel info java-runtime`.
The binaries and source-code of the bundled OpenJDK can be
[downloaded from our mirror server](https://mirror.bazel.build/openjdk/index.html).

_Security_: All our binaries are signed with our
[public key](https://bazel.build/bazel-release.pub.gpg) 3D5919B448457EE0.
'
}

# Deploy a github release using a third party tool:
#   https://github.com/c4milo/github-release
# This methods expects the following arguments:
#   $1..$n files generated by package_build (should not contains the README file)
# Please set GITHUB_TOKEN to talk to the Github API.
function release_to_github() {
  local artifact_dir="$1"

  local release_name=$(get_release_name)
  local rc=$(get_release_candidate)

  if [ -n "${release_name}" ] && [ -z "${rc}" ]; then
    local github_token="$(gsutil cat gs://bazel-trusted-encrypted-secrets/github-trusted-token.enc | \
        gcloud kms decrypt --project bazel-public --location global --keyring buildkite --key github-trusted-token --ciphertext-file - --plaintext-file -)"

    if [ "$(is_rolling_release)" -eq 1 ]; then
      GITHUB_TOKEN="${github_token}" github-release -prerelease "bazelbuild/bazel" "${release_name}" "" "$(get_release_page)" "${artifact_dir}/*"
    else
      GITHUB_TOKEN="${github_token}" github-release "bazelbuild/bazel" "${release_name}" "" "$(get_release_page)" "${artifact_dir}/*"
    fi
  fi
}

# Creates an index of the files contained in folder $1 in Markdown format.
function create_index_md() {
  # First, add the release notes
  get_release_page
  # Then, add the list of files
  echo
  echo "## Index of files"
  echo
  for f in $1/*.sha256; do  # just list the sha256 ones
    local filename=$(basename $f .sha256);
    echo " - [${filename}](${filename}) [[SHA-256](${filename}.sha256)] [[SIG](${filename}.sig)]"
  done
}

# Creates an index of the files contained in folder $1 in HTML format.
function create_index_html() {
  create_index_md "${@}" | pandoc -f markdown -t html
}

# Deploy a release candidate to Google Cloud Storage.
# It requires to have gsutil installed. You can force the path to gsutil
# by setting the GSUTIL environment variable.
# This methods expects the following arguments:
#   $1..$n files generated by package_build
function release_to_gcs() {
  local artifact_dir="$1"

  local release_name="$(get_release_name)"
  local rc="$(get_release_candidate)"

  if [ -n "${release_name}" ]; then
    local release_path="${release_name}/release"
    if [ "$(is_rolling_release)" -eq 1 ]; then
      # Store rolling releases and their RCs in the same directory (for simplicity)
      release_path="$(get_lts_name)/rolling/$(get_full_release_name)"
    elif [ -n "${rc}" ]; then
      release_path="${release_name}/rc${rc}"
    fi
    create_index_html "${artifact_dir}" > "${artifact_dir}/index.html"
    gsutil -m cp "${artifact_dir}/**" "gs://bazel/${release_path}"
  fi
}

function ensure_gpg_secret_key_imported() {
  if ! gpg --list-secret-keys | grep "${APT_GPG_KEY_ID}" > /dev/null; then
    keyfile=$(mktemp --tmpdir)
    chmod 0600 "${keyfile}"
    gsutil cat "gs://bazel-trusted-encrypted-secrets/release-key.gpg.enc" | \
        gcloud kms decrypt --location "global" --keyring "buildkite" --key "bazel-release-key" --ciphertext-file "-" --plaintext-file "${keyfile}"
    gpg --allow-secret-key-import --import "${keyfile}"
    rm -f "${keyfile}"
  fi

  # Make sure we use stronger digest algorithm。
  # We use reprepro to generate the debian repository,
  # but there's no way to pass flags to gpg using reprepro, so writing it into
  # ~/.gnupg/gpg.conf
  if ! grep "digest-algo sha256" ~/.gnupg/gpg.conf > /dev/null; then
    echo "digest-algo sha256" >> ~/.gnupg/gpg.conf
  fi
}

# Generate new content of Release file
function print_new_release_content() {
  local distribution="$1"
  # Print the headers of the original Release file
  cat <<EOF
Origin: Bazel Authors
Label: Bazel
Codename: $1
Date: $(date -u "+%a, %d %b %Y %H:%M:%S UTC")
Architectures: amd64
Components: jdk1.8
Description: Bazel APT Repository
EOF
  metadata_files=("jdk1.8/binary-amd64/Packages" "jdk1.8/binary-amd64/Packages.gz" "jdk1.8/binary-amd64/Release" "jdk1.8/source/Sources.gz" "jdk1.8/source/Release")
  # Re-generate hashes for all metadata fiels
  echo MD5Sum:
   for file in ${metadata_files[*]}; do
    path="dists/${distribution}/$file"
    echo "" "$(md5sum ${path} | cut -d " " -f1)" "$(ls -l ${path} | cut -d " " -f5)" "$file"
   done
  echo SHA1:
   for file in ${metadata_files[*]}; do
    path="dists/${distribution}/$file"
    echo "" "$(sha1sum ${path} | cut -d " " -f1)" "$(ls -l ${path} | cut -d " " -f5)" "$file"
   done
  echo SHA256:
   for file in ${metadata_files[*]}; do
    path="dists/${distribution}/$file"
    echo "" "$(sha256sum ${path} | cut -d " " -f1)" "$(ls -l ${path} | cut -d " " -f5)" "$file"
   done
}

# Merge metadata with previous distribution
function merge_previous_dists() {
  local distribution="$1"
  # Download the metadata info from previous distribution
  mkdir -p previous
  gsutil -m cp -r "gs://bazel-apt/dists" "./previous"

  # Merge Packages and Packages.gz file
  cat "previous/dists/${distribution}/jdk1.8/binary-amd64/Packages" >> "dists/${distribution}/jdk1.8/binary-amd64/Packages"
  gzip -9c "dists/${distribution}/jdk1.8/binary-amd64/Packages" > "dists/${distribution}/jdk1.8/binary-amd64/Packages.gz"

  # Merge Sources.gz file
  gunzip "previous/dists/${distribution}/jdk1.8/source/Sources.gz"
  gunzip "dists/${distribution}/jdk1.8/source/Sources.gz"
  cat "previous/dists/${distribution}/jdk1.8/source/Sources" >> "dists/${distribution}/jdk1.8/source/Sources"
  gzip -9c "dists/${distribution}/jdk1.8/source/Sources" > "dists/${distribution}/jdk1.8/source/Sources.gz"
  rm -f "dists/${distribution}/jdk1.8/source/Sources"

  # Update Release file
  print_new_release_content "${distribution}" > "dists/${distribution}/Release.new"
  mv "dists/${distribution}/Release.new" "dists/${distribution}/Release"

  # Generate new signatures for Release file
  rm -f "dists/${distribution}/InRelease" "dists/${distribution}/Release.gpg"
  gpg --output "dists/${distribution}/InRelease" --clearsign "dists/${distribution}/Release"
  gpg --output "dists/${distribution}/Release.gpg" --detach-sign "dists/${distribution}/Release"
}

# Create a debian package with version in package name and add it to the repo
function add_versioned_deb_pkg() {
  local distribution="$1"
  local deb_pkg_name="$2"
  # Extract the original package
  mkdir -p deb-old
  dpkg-deb -R "${deb_pkg_name}" deb-old

  # Get bazel version
  bazel_version=$(grep "Version:" deb-old/DEBIAN/control | cut -d " " -f2)
  bazel_version=${bazel_version/\~/}

  # Generate new control file
  mkdir -p deb-new/DEBIAN
  sed "s/Package:\ bazel/Package:\ bazel-${bazel_version}/g" "deb-old/DEBIAN/control" > "deb-new/DEBIAN/control"

  # Rename the actual Bazel binary to bazel-${bazel_version}
  mkdir -p deb-new/usr/bin
  cp "deb-old/usr/bin/bazel-real" "deb-new/usr/bin/bazel-${bazel_version}"

  # Re-pack the debian package and add it to the repo
  versioned_deb_pkg_name="bazel-${bazel_version}-versioned-package-amd64.deb"
  chmod -R 0755 deb-new
  dpkg-deb -b deb-new "${versioned_deb_pkg_name}"
  reprepro -C jdk1.8 includedeb "${distribution}" "${versioned_deb_pkg_name}"
}

function create_apt_repository() {
  mkdir conf
  cat > conf/distributions <<EOF
Origin: Bazel Authors
Label: Bazel
Codename: stable
Architectures: amd64 source
Components: jdk1.8
Description: Bazel APT Repository
DebOverride: override.stable
DscOverride: override.stable
SignWith: ${APT_GPG_KEY_ID}

Origin: Bazel Authors
Label: Bazel
Codename: testing
Architectures: amd64 source
Components: jdk1.8
Description: Bazel APT Repository
DebOverride: override.testing
DscOverride: override.testing
SignWith: ${APT_GPG_KEY_ID}
EOF

  cat > conf/options <<EOF
verbose
ask-passphrase
basedir .
EOF

  # TODO(#2264): this is a quick workaround #2256, figure out a correct fix.
  cat > conf/override.stable <<EOF
bazel     Section     contrib/devel
bazel     Priority    optional
EOF
  cat > conf/override.testing <<EOF
bazel     Section     contrib/devel
bazel     Priority    optional
EOF

  ensure_gpg_secret_key_imported

  local distribution="$1"
  local deb_pkg_name="$2"
  local deb_dsc_name="$3"

  debsign -k "${APT_GPG_KEY_ID}" "${deb_dsc_name}"

  reprepro -C jdk1.8 includedeb "${distribution}" "${deb_pkg_name}"
  reprepro -C jdk1.8 includedsc "${distribution}" "${deb_dsc_name}"

  add_versioned_deb_pkg "${distribution}" "${deb_pkg_name}"

  merge_previous_dists "${distribution}"

  gsutil -m cp -r dists pool "gs://bazel-apt"
}

function release_to_apt() {
  local artifact_dir="$1"

  local release_name="$(get_release_name)"
  local rc="$(get_release_candidate)"

  if [ -n "${release_name}" ]; then
    local release_label="$(get_full_release_name)"
    local deb_pkg_name="${release_name}/bazel_${release_label}-linux-x86_64.deb"
    local deb_dsc_name="${release_name}/bazel_${release_label}.dsc"
    local deb_tar_name="${release_name}/bazel_${release_label}.tar.gz"

    pushd "${artifact_dir}"
    if [ -n "${rc}" ]; then
      create_apt_repository testing "${deb_pkg_name}" "${deb_dsc_name}"
    else
      create_apt_repository stable "${deb_pkg_name}" "${deb_dsc_name}"
    fi
    popd
  fi
}

# A wrapper around the release deployment methods.
function deploy_release() {
  local release_label="$(get_full_release_name)"
  local release_name="$(get_release_name)"

  if [[ ! -d $1 ]]; then
    echo "Usage: deploy_release ARTIFACT_DIR"
    exit 1
  fi
  artifact_dir="$1"

  if [[ -z $release_name ]]; then
    echo "Could not get the release name - are you in a release branch directory?"
    exit 1
  fi

  ensure_gpg_secret_key_imported

  rm -f "${artifact_dir}"/*.{sha256,sig}
  for file in "${artifact_dir}"/*; do
    (cd "${artifact_dir}" && sha256sum "$(basename "${file}")" > "${file}.sha256")
    gpg --no-tty --detach-sign -u "${APT_GPG_KEY_ID}" "${file}"
  done

  if [ "$(is_rolling_release)" -eq 0 ]; then
    apt_working_dir="$(mktemp -d --tmpdir)"
    echo "apt_working_dir = ${apt_working_dir}"
    mkdir "${apt_working_dir}/${release_name}"
    cp "${artifact_dir}/bazel_${release_label}-linux-x86_64.deb" "${apt_working_dir}/${release_name}"
    cp "${artifact_dir}/bazel_${release_label}.dsc" "${apt_working_dir}/${release_name}"
    cp "${artifact_dir}/bazel_${release_label}.tar.gz" "${apt_working_dir}/${release_name}"
    release_to_apt "${apt_working_dir}"
  fi

  gcs_working_dir="$(mktemp -d --tmpdir)"
  echo "gcs_working_dir = ${gcs_working_dir}"
  cp "${artifact_dir}"/* "${gcs_working_dir}"
  release_to_gcs "${gcs_working_dir}"

  github_working_dir="$(mktemp -d --tmpdir)"
  echo "github_working_dir = ${github_working_dir}"
  cp "${artifact_dir}"/* "${github_working_dir}"
  rm -f "${github_working_dir}/bazel_${release_label}"*.{dsc,tar.gz}{,.sha256,.sig}
  release_to_github "${github_working_dir}"
}


How to install FranceTV Pluzz?
You can install FranceTV Pluzz in Kodi using the SuperRepo repository, the repository of the developer or by installing a single zip-file.
SuperRepo does not maintain FranceTV Pluzz. We only provide an automated index for Kodi users to have easy access to FranceTV Pluzz and other addons for Kodi. We are not affiliated with the developers (JUL1EN094) and do not provide help for this particular addon.


text:
EPA Administrator Says Water Quality Is Improving In Contaminated Western Rivers
Published August 12, 2015 at 7:18 PM EDT
The head of the Environmental Protection Agency says samples of waters that flow through three Western states, contaminated by waste from an abandoned Colorado mine last week, are showing improvement. Experts say the heavy metals and other materials are still there, though, in the riverbeds.
Speaking to reporters today from Durango, Colo., EPA Administrator Gina McCarthy promised more details later but did provide what she called "very good news."
"We have water quality data from Aug. 7, 8 and 9 from La Plata County and it shows that the levels have returned to pre-event conditions," McCarthy said.
It was not quite an "all clear," though.
The Associated Press reports that the riverbed remains tainted:
" 'There will be a source of these contaminants in the rivers for a long time,' said hydrologist Tom Myers, who runs a Nevada-based consulting business. 'Every time there's a high flow, it will stir it up and it will be moving those contaminants downstream.' "
McCarthy said EPA will work "with our counties and our local communities so that they can have a chance to review this data thoroughly and they can have a full opportunity to talk through what this means in terms of decisions they're going to make moving forward."
"The very good news is that the data so far is showing that water quality does restore itself to its prior conditions," McCarthy said.
It's been a week since a toxic flood of heavy metals, arsenic and other materials from the Gold King Mine spilled into the waterway, turning it a vibrant mustard color.
McCarthy announced the EPA would be conducting an internal investigation as to what caused the Aug. 5 spill. The EPA chief also said her agency will seek an independent review of what happened.
The Denver Post reports:
"While in the region, McCarthy is not planning a trip to the Gold King Mine, nor is she holding a public meeting. The incident, she said, was a 'heart-breaking situation.' "
McCarthy reiterated points she made ahead of her trip to Colorado, saying, "No agency could be more upset about the incident happening" and that the EPA is taking full responsibility.
As we've reported, the spill was triggered last week when an EPA cleanup team breached a dam at an abandoned Colorado mine.


July Japanese Yen 1.33 Call options settled at.0004. Japanese Yen 1.33 Call options settled at.0047 The Sep. 1.18 Put is 9.4 times more expensive than The July 1.18.A Guide to Trading Commodities for Beginners - Learning to Trade Correctly.Perfect for Traders Learning to Trade. futures, stock, and options trading.
Futures options are a great way to get involved in trading the futures markets, according to Learn-To-Trade.com.The Risks of Trading Commodities. TRADING IN COMMODITY FUTURES OR OPTIONS INVOLVES SUBSTANTIAL RISK OF LOSS.AMP Futures Trading is a full service and deep discount commodity and online futures trading brokerage firm.
I Sincerely wants to thank the team of traders at Derivative Trading Academy for their fantastic effort to build this institute for derivatives with Professional.Welcome to a The Traders Resource to Learn About How to Trade Forex Futures for.Now you can get started with Common Sense Commodities and Options Trading for Beginners. and learn from one of the masters,.
Essentially, futures trading adds the dimension of time to investing.Options trading firms nyc. Added. Learn More. LLC is a proprietary trading firm specializing in commodity futures and options trading. areas.RJO Futures offers educational guides for the most inexperienced to experienced traders.Trading futures online has become more and more popular in recent years and although the standards available to the internet retail trader have dramatically increased.
Nithin Kamath: Futures and options requires some commitment in terms of time to learn how to trade and then tracking your trades once you have taken. Learning how to trade commodity options is a great opportunity.But there are some nuances when trading commodity options that you have to consider if. At last,.
One of the draws for people looking to learn how to trade commodity Futures is the outstanding profit potential for the astute trader.
If you understand the effect that volatility has on the options market, you will understand how sometimes extraordinary profits can be pulled from trading.
There are inherent risks involved in trading stocks, options, commodity and index futures with real money.With commodity futures, traders can take advantage of global economic volatility.
Learn techniques for options trading, option strategies, and commodity trading that are used by professional traders. Dan Gramza provides an overview of futures trading and explains what makes trading futures markets with TradeStation so attractive to traders.Learn How to Trade Commodities (Collection), one of over 35,000 titles on Safari.
No representation or implication is being made that using the Trading Concepts.
Trading commodities is not for everyone, but trading futures, options and general commodities is definitely not.
Options on futures began trading in 1983. Options can also be used in hedging strategies with futures and cash.But there are some nuances when trading commodity options. 3 Ways Commodity Options Trading Differs from Stock.
Learn How to Trade Crude Oil Trading Room and Day. to accept them in order to invest in the futures and options markets.
Beginners Guide. Beginners Guide to Commodities Futures Trading in India. Futures Exchanges - a look inside Futures Trading Short Course.


text:
04:30 AMCBS 11 News at 4:30am
Arlington Police Officers Honored For Excellence At State Capitol
Filed Under:Arlington Police officers, Austin, DFW News, state capitol, Texas, Texas Commission on Law Enforcement
AUSTIN, Texas (CBSDFW.COM) – Eleven Arlington Police Officers were honored today at the State Capitol in Austin by the Texas Commission on Law Enforcement (TCOLE) for a variety of outstanding deeds and excellent police work.
Sergeants Robert Walsh and JaNae Powell-McGee received the TCOLE Achievement Award for Public Service. Corporals William Brewer, Leonard Lake, Heath Cook, David Henze, Ben Baskin and Officers Robert Phillips, Eric Garcia, Jacob Williams, and Brent Mayorga were honored with the TCOLE Award for Valor.
Sergeants Robert Walsh and JaNae Powell-McGee created and implemented the Bridge Kids Program in 2016. The idea behind the Bridge Kids Program began when Sergeant Walsh saw a need to help children at a nearby elementary school get home safely crossing over a pedestrian bridge. Parents and neighbors were concerned about juvenile delinquent behavior and bullying of kids near the bridge. The officers would meet the kids near the bridge and walk them across allowing an opportunity for communication with the kids. The department engaged community support with the apartment complex management near the bridge and organized a summer tutoring program with volunteers from the school. As the program continued to flourish, Sergeant Powell-McGee assisted with organizing a Daddy-Daughter dance around Valentine's Day, which has now become an annual tradition along with painting a mural on the spillway under the bridge. They also reward the kids at the end of the school with an Ice Cream Social.
The elementary school administration has credited the Bridge Kids program with an increase in academic achievements, positive classroom environments and improved behavior for the students. In 2018, Bridge Kids won the Texas Municipal League Excellence Award in Public Safety. The program continues to thrive as officers walk the student's home from school each day.
Corporal Leonard Lake and Officers Robert Phillips, Eric Garcia and Jacob Williams were honored for their quick and historic actions after a suspect in a stolen vehicle evaded officers and crashed into a traffic signal pole. Officers initiated a traffic stop on a stolen vehicle with five occupants. All officers took life saving measures by pulling the occupants from the inside of the vehicle and moving them a safe distance away as a fire started in the engine compartment and spread throughout the passenger compartment. The occupants in the car had significant injuries from the crash and four of the five passengers were not able to get out of the vehicle without the help from the officers and would have likely perished as the fire was quickly engulfing the passenger compartment.
Corporals William Brewer, Ben Baskin, Heath Cook, and David Henze were honored for acting selflessly and heroically, and willingly placing themselves in harm's way. In 2017, SWAT Officers were assisting Narcotics Detectives with the execution of a search warrant in which the suspected drug dealer was identified as having a violent criminal history. As the team made the initial entry into the residence, the suspect began shooting at them through the walls with a semi-automatic rifle. Corporal William Brewer, the first officer to enter the residence, was shot in the ankle and a second round hit his opposite foot. Corporal Ben Baskin immediately grabbed Corporal Brewer's vest drag strap and pulled him back toward the doorway. As Corporal Baskin was pulling Corporal Brewer to safety, he and Corporal Brewer began returning fire toward the suspect who was advancing on them.
Despite his injuries, Corporal Brewer was able to continue to engage the suspect while Corporal Baskin knowingly placed himself in extreme danger of death or serious bodily injury in order to get Corporal Brewer to safety. Corporals Heath Cook and David Henze, along with Officer Mayorga disregarded their own safety and engaged in the firefight with the suspect as he continued to advance on the team even though there was no cover available. Corporal Cook was struck in the hand but continued to engage in the firefight.
"The heroism, acts of compassion, and commitment to making Arlington better is a testament to all of these officers being recognized today in Austin," said Police Chief Will Johnson. "I am so proud of these achievements which highlights the dangers our profession faces and the commitment that we make with our community related to youth investments."